| Index: packages/intl/README.md
|
| diff --git a/packages/intl/README.md b/packages/intl/README.md
|
| index e1fcfc0a5121d6f1efdbffc79e8cd884c0c56efb..0b38b17d95e846899dfd472a84588a31973e9320 100644
|
| --- a/packages/intl/README.md
|
| +++ b/packages/intl/README.md
|
| @@ -52,11 +52,11 @@ or
|
| ```dart
|
| print(myMessage(dateString, locale: 'ar');
|
| ```
|
| -
|
| +
|
| or
|
|
|
| ```dart
|
| -Intl.defaultLocale = "es"'
|
| +Intl.defaultLocale = "es";
|
| new DateFormat.jm().format(new DateTime.now());
|
| ```
|
|
|
| @@ -96,13 +96,20 @@ This provides, in addition to the basic message string, a name, a
|
| description for translators, the arguments used in the message, and
|
| examples. The `name` and `args` parameters are required, and must
|
| match the name (or ClassName_methodName) and arguments list of the
|
| -function respectively. In the future we
|
| -hope to have these provided automatically.
|
| +function respectively. However, there is a transformer provided that
|
| +will automatically insert those parameters for you. In pubspec.yaml,
|
| +add a section like
|
| +
|
| + transformers:
|
| + - intl:
|
| + $include: some_file.dart
|
| +
|
| +and then you can omit the name and args.
|
|
|
| -This can be run in the program before any translation has been done,
|
| -and will just return the message string. It can also be extracted to a
|
| -file and then be made to return a translated version without modifying
|
| -the original program. See "Extracting Messages" below for more
|
| +A function with an Intl.message call can be run in the program before any
|
| +translation has been done, and will just return the message string. It can also
|
| +be extracted to a file and then be made to return a translated version without
|
| +modifying the original program. See "Extracting Messages" below for more
|
| details.
|
|
|
| The purpose of wrapping the message in a function is to allow it to
|
| @@ -123,13 +130,13 @@ the message.
|
| name: "greetingMessage",
|
| args: [name],
|
| desc: "Greet the user as they first open the application",
|
| - examples: {'name': "Emily"});
|
| + examples: const {'name': "Emily"});
|
| print(greetingMessage('Dan'));
|
|
|
| There is one special class of complex expressions allowed in the
|
| message string, for plurals and genders.
|
|
|
| - remainingEmailsMessage(int howMany, String userName) =>
|
| + remainingEmailsMessage(int howMany, String userName) =>
|
| Intl.message(
|
| "${Intl.plural(howMany,
|
| zero: 'There are no emails left for $userName.',
|
| @@ -138,7 +145,7 @@ message string, for plurals and genders.
|
| name: "remainingEmailsMessage",
|
| args: [howMany, userName],
|
| desc: "How many emails remain after archiving.",
|
| - examples: {'howMany': 42, 'userName': 'Fred'});
|
| + examples: const {'howMany': 42, 'userName': 'Fred'});
|
|
|
| print(remainingEmailsMessage(1, "Fred"));
|
|
|
| @@ -146,30 +153,30 @@ However, since the typical usage for a plural or gender is for it to
|
| be at the top-level, we can also omit the [Intl.message][Intl.message] call and
|
| provide its parameters to the [Intl.plural][Intl.plural] call instead.
|
|
|
| - remainingEmailsMessage(int howMany, String userName) =>
|
| + remainingEmailsMessage(int howMany, String userName) =>
|
| Intl.plural(
|
| howMany,
|
| zero: 'There are no emails left for $userName.',
|
| one: 'There is one email left for $userName.',
|
| - other: 'There are $howMany emails left for $userName.'),
|
| + other: 'There are $howMany emails left for $userName.',
|
| name: "remainingEmailsMessage",
|
| args: [howMany, userName],
|
| desc: "How many emails remain after archiving.",
|
| - examples: {'howMany': 42, 'userName': 'Fred'});
|
| + examples: const {'howMany': 42, 'userName': 'Fred'});
|
|
|
| Similarly, there is an [Intl.gender][Intl.gender] message, and plurals
|
| and genders can be nested.
|
|
|
| - notOnlineMessage(String userName, String userGender) =>
|
| + notOnlineMessage(String userName, String userGender) =>
|
| Intl.gender(
|
| userGender,
|
| male: '$userName is unavailable because he is not online.',
|
| female: '$userName is unavailable because she is not online.',
|
| - other: '$userName is unavailable because they are not online'),
|
| + other: '$userName is unavailable because they are not online',
|
| name: "notOnlineMessage",
|
| args: [userName, userGender],
|
| desc: "The user is not available to hangout.",
|
| - examples: {{'userGender': 'male', 'userName': 'Fred'},
|
| + examples: const {{'userGender': 'male', 'userName': 'Fred'},
|
| {'userGender': 'female', 'userName' : 'Alice'}});
|
|
|
| It's recommended to use complete sentences in the sub-messages to keep
|
| @@ -179,26 +186,29 @@ the structure as simple as possible for the translators.
|
|
|
| When your program contains messages that need translation, these must
|
| be extracted from the program source, sent to human translators, and the
|
| -results need to be incorporated.
|
| +results need to be incorporated. The code for this is in the
|
| +[Intl_translation][Intl_translation] package.
|
|
|
| To extract messages, run the `extract_to_arb.dart` program.
|
|
|
| - pub run intl:extract_to_arb --output-dir=target/directory
|
| + pub run intl_translation:extract_to_arb --output-dir=target/directory
|
| my_program.dart more_of_my_program.dart
|
|
|
| This will produce a file `intl_messages.arb` with the messages from
|
| all of these programs. an [ARB]
|
| (https://code.google.com/p/arb/wiki/ApplicationResourceBundleSpecification)
|
| format file which can be used for input to translation tools like
|
| -[Google Translator Toolkit](https://translate.google.com/toolkit/)
|
| +[Google Translator Toolkit](https://translate.google.com/toolkit/)
|
| The resulting translations can be used to generate a set of libraries
|
| using the `generate_from_arb.dart` program.
|
|
|
| This expects to receive a series of files, one per
|
| -locale.
|
| +locale.
|
|
|
| - pub run intl:generate_from_arb --generated_file_prefix=<prefix>
|
| - <my_dart_files> <translated_ARB_files>
|
| +```
|
| +pub run intl_translation:generate_from_arb --generated_file_prefix=<prefix>
|
| + <my_dart_files> <translated_ARB_files>
|
| +```
|
|
|
| This will generate Dart libraries, one per locale, which contain the
|
| translated versions. Your Dart libraries can import the primary file,
|
| @@ -307,16 +317,16 @@ detected from the text.
|
| new BidiFormatter.RTL().wrapWithUnicode('xyz');
|
| new BidiFormatter.RTL().wrapWithSpan('xyz');
|
|
|
| -[intl_lib]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl
|
| -[Intl]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl
|
| -[DateFormat]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.DateFormat
|
| -[NumberFormat]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.NumberFormat
|
| -[withLocale]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.Intl#id_withLocale
|
| -[defaultLocale]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.Intl#id_defaultLocale
|
| -[Intl.message]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.Intl#id_message
|
| -[Intl.plural]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.Intl#id_plural
|
| -[Intl.gender]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.Intl#id_gender
|
| -[DateTime]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:core.DateTime
|
| -[BidiFormatter]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.BidiFormatter
|
| -[BidiFormatter.RTL]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.BidiFormatter#id_BidiFormatter-RTL
|
| -[BidiFormatter.LTR]: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.BidiFormatter#id_BidiFormatter-LTR
|
| +[intl_lib]: https://www.dartdocs.org/documentation/intl/latest/intl/intl-library.html
|
| +[Intl]: https://www.dartdocs.org/documentation/intl/latest
|
| +[DateFormat]: https://www.dartdocs.org/documentation/intl/latest/intl/DateFormat-class.html
|
| +[NumberFormat]: https://www.dartdocs.org/documentation/intl/latest/intl/NumberFormat-class.html
|
| +[withLocale]: https://www.dartdocs.org/documentation/intl/latest/intl/Intl/withLocale.html
|
| +[defaultLocale]: https://www.dartdocs.org/documentation/intl/latest/intl/Intl/defaultLocale.html
|
| +[Intl.message]: https://www.dartdocs.org/documentation/intl/latest/intl/Intl/message.html
|
| +[Intl.plural]: https://www.dartdocs.org/documentation/intl/latest/intl/Intl/plural.html
|
| +[Intl.gender]: https://www.dartdocs.org/documentation/intl/latest/intl/Intl/gender.html
|
| +[DateTime]: https://api.dartlang.org/stable/dart-core/DateTime-class.html
|
| +[BidiFormatter]: https://www.dartdocs.org/documentation/intl/latest/intl/BidiFormatter-class.html
|
| +[BidiFormatter.RTL]: https://www.dartdocs.org/documentation/intl/latest/intl/BidiFormatter/BidiFormatter.RTL.html
|
| +[BidiFormatter.LTR]: https://www.dartdocs.org/documentation/intl/latest/intl/BidiFormatter/BidiFormatter.LTR.html
|
|
|