Dart API ReferenceintlIntl

Intl Class

Internationalization object providing access to message formatting objects, date formatting, parsing, bidirectional text relative to a specific locale.

Constructors

Code new Intl([a_locale]) #

Constructor optionally _locale for specifics of the language locale to be used, otherwise, we will attempt to infer it (acceptable if Dart is running on the client, we can infer from the browser/client preferences).

Intl([a_locale]) {
  _locale = a_locale;
  if (_locale == null) _locale = _getDefaultLocale();
  intlMsg = new IntlMessage(_locale);
  date = new DateFormat(_locale);
}

Static Methods

Code String getCurrentLocale() #

Accessor for the current locale. This should always == the default locale, unless for some reason this gets called inside a message that resets the locale.

static String getCurrentLocale() {
  return _locale;
}

Code String message(String message_str, [String desc = '', Map examples = const{}, String locale = '']) #

Create a message that can be internationalized. It takes a message_str that will be translated, which may be interpolated based on one or more variables, a desc providing a description of usage for the message_str, and a map of examples for each data element to be substituted into the message. For example, if message="Hello, $name", then examples = {'name': 'Sparky'}. If not using the user's default locale, or if the locale is not easily detectable, explicitly pass locale. The values of desc and examples are not used at run-time but are only made available to the translators, so they MUST be simple Strings available at compile time: no String interpolation or concatenation. The expected usage of this is inside a function that takes as parameters the variables used in the interpolated string, and additionally also a locale (optional).

static String message(String message_str, [final String desc='',
                      final Map examples=const {}, String locale='']) {
  return message_str;
}

Code String plural(howMany, Map cases, [num offset = 0]) #

Support method for message formatting. Select the correct plural form from cases given howMany.

static String plural(var howMany, Map cases, [num offset=0]) {
  // TODO(efortuna): Deal with "few" and "many" cases, offset, and others!
  return select(howMany.toString(), cases);
}

Code String select(String choice, Map cases) #

Support method for message formatting. Select the correct exact (gender, usually) form from cases given the user choice.

static String select(String choice, Map cases) {
  if (cases.containsKey(choice)) {
    return cases[choice];
  } else if (cases.containsKey('other')){
    return cases['other'];
  } else {
    return '';
  }
}

Code String withLocale(String locale, Function msg_function) #

Format the given function with a specific locale, given a msg_function that takes no parameters and returns a String. We basically delay calling the message function proper until after the proper locale has been set.

static String withLocale(String locale, Function msg_function) {
  // We have to do this silliness because Locale is not known at compile time,
  // but must be a static variable.
  if (_locale == null) _locale = _getDefaultLocale();
  var oldLocale = _locale;
  _locale = locale;
  var result = msg_function();
  _locale = oldLocale;
  return result;
}

Fields

Code DateFormat date #

DateFormat date;

Code IntlMessage intlMsg #

IntlMessage intlMsg;