Index: pkg/intl/test/message_extraction/make_hardcoded_translation.dart |
diff --git a/pkg/intl/test/message_extraction/make_hardcoded_translation.dart b/pkg/intl/test/message_extraction/make_hardcoded_translation.dart |
index f936f11e7056860d943b116eb1fd858f741fecf4..f0affe0ca0307eb96baa9614872e9ec06dd04ff2 100644 |
--- a/pkg/intl/test/message_extraction/make_hardcoded_translation.dart |
+++ b/pkg/intl/test/message_extraction/make_hardcoded_translation.dart |
@@ -14,6 +14,18 @@ import 'dart:io'; |
import 'dart:json' as json; |
import 'package:pathos/path.dart' as path; |
import 'package:args/args.dart'; |
+import 'package:intl/src/intl_message.dart'; |
+import 'package:serialization/serialization.dart'; |
+ |
+get s => new Serialization() |
+ ..addRuleFor(new VariableSubstitution(0, null), |
Emily Fortuna
2013/07/03 17:52:33
can we have more descriptive names than s and w he
Alan Knight
2013/07/03 18:41:07
Done.
|
+ constructorFields: ["index", "parent"]) |
+ ..addRuleFor(new LiteralString("a", null), |
+ constructorFields: ["string", "parent"]) |
+ ..addRuleFor(new CompositeMessage([], null), constructor: "parent", |
+ constructorFields: ["parent"]); |
+var format = const SimpleFlatFormat(); |
+get w => s.newWriter(format); |
/** A list of the French translations that we will produce. */ |
var french = { |
@@ -35,13 +47,39 @@ var french = { |
"notAlwaysTranslated" : "Ce manque certaines traductions", |
"thisNameIsNotInTheOriginal" : "Could this lead to something malicious?", |
"originalNotInBMP" : "Anciens caractĂšres grecs jeux du pendu: đ đ .", |
- "plural" : """Une des choses difficiles est \${Intl.plural(num, |
- { |
- '0' : 'la forme plurielle', |
- '1' : 'la forme plurielle', |
- 'other' : 'des formes plurielles'})}""", |
- "namedArgs" : "La chose est, \$thing", |
- "escapable" : "Escapes: \n\r\f\b\t\v." |
+ "escapable" : "Escapes: \n\r\f\b\t\v.", |
+ "plurals" : w.write(new Plural.from("num", |
+ [ |
+ ["zero", "Est-ce que nulle est pluriel?"], |
+ ["one", "C'est singulier"], |
+ ["other", "C'est pluriel (\$num)."] |
+ ], null)), |
+ // TODO(alanknight): These are pretty horrible to write out manually. Provide |
+ // a better way of reading/writing translations. A real format would be good. |
+ "whereTheyWent" : w.write(new Gender.from("gender", |
+ [ |
+ ["male", [0, " est allé à sa ", 2]], |
+ ["female", [0, " est allée à sa ", 2]], |
+ ["other", [0, " est allé à sa ", 2]] |
+ ], null)), |
+ // Gratuitously different translation for testing. Ignoring gender of place. |
+ "nestedMessage" : w.write(new Gender.from("combinedGender", |
+ [ |
+ ["other", new Plural.from("number", |
+ [ |
+ ["zero", "Personne n'avait allé à la \$place"], |
+ ["one", "\${names} était allé à la \$place"], |
+ ["other", "\${names} étaient allés à la \$place"], |
+ ], null) |
+ ], |
+ ["female", new Plural.from("number", |
+ [ |
+ ["one", "\$names était allée à la \$place"], |
+ ["other", "\$names étaient allées à la \$place"], |
+ ], null) |
+ ] |
+ ], null |
+ )) |
}; |
/** A list of the German translations that we will produce. */ |
@@ -61,14 +99,40 @@ var german = { |
"nonLambda" : "Diese Methode ist nicht eine Lambda", |
"staticMessage" : "Dies ergibt sich aus einer statischen Methode", |
"originalNotInBMP" : "Antike griechische GalgenmĂ€nnchen Zeichen: đ đ ", |
- "plurals" : """\${Intl.plural(num, |
- { |
- '0' : 'Einer der knifflige Dinge ist der Plural', |
- '1' : 'Einer der knifflige Dinge ist der Plural', |
- 'other' : 'Zu den kniffligen Dinge Pluralformen' |
- })}""", |
- "namedArgs" : "Die Sache ist, \$thing", |
- "escapable" : "Escapes: \n\r\f\b\t\v." |
+ "escapable" : "Escapes: \n\r\f\b\t\v.", |
+ "plurals" : w.write(new Plural.from("num", |
+ [ |
+ ["zero", "Ist Null Plural?"], |
+ ["one", "Dies ist einmalig"], |
+ ["other", "Dies ist Plural (\$num)."] |
+ ], null)), |
+ // TODO(alanknight): These are pretty horrible to write out manually. Provide |
+ // a better way of reading/writing translations. A real format would be good. |
+ "whereTheyWent" : w.write(new Gender.from("gender", |
+ [ |
+ ["male", [0, " ging zu seinem ", 2]], |
+ ["female", [0, " ging zu ihrem ", 2]], |
+ ["other", [0, " ging zu seinem ", 2]] |
+ ], null)), |
+ //Note that we're only using the gender of the people. The gender of the |
+ //place also matters, but we're not dealing with that here. |
+ "nestedMessage" : w.write(new Gender.from("combinedGender", |
+ [ |
+ ["other", new Plural.from("number", |
+ [ |
+ ["zero", "Niemand ging zu \$place"], |
+ ["one", "\${names} ging zum \$place"], |
+ ["other", "\${names} gingen zum \$place"], |
+ ], null) |
+ ], |
+ ["female", new Plural.from("number", |
+ [ |
+ ["one", "\$names ging in dem \$place"], |
+ ["other", "\$names gingen zum \$place"], |
+ ], null) |
+ ] |
+ ], null |
+ )) |
}; |
/** The output directory for translated files. */ |
@@ -92,7 +156,7 @@ main() { |
var args = new Options().arguments; |
if (args.length == 0) { |
print('Usage: generate_hardcoded_translation [--output-dir=<dir>] ' |
- '[originalFile.dart]'); |
+ '[originalFile.json]'); |
exit(0); |
} |
var parser = new ArgParser(); |