Unverified Commit 9b3754d5 authored by Hans Muller's avatar Hans Muller Committed by GitHub

Extend the gen_l10n integration test (#51375)

parent eb00c562
...@@ -76,29 +76,32 @@ void main() { ...@@ -76,29 +76,32 @@ void main() {
await l10nEnd.future; await l10nEnd.future;
await subscription.cancel(); await subscription.cancel();
expect(stdout.toString(), expect(stdout.toString(),
'#l10n 0 (Hello World)\n' '#l10n 0 (CA Hello World)\n'
'#l10n 1 (Hello World)\n' '#l10n 1 (Hello CA fallback World)\n'
'#l10n 2 (Hello World)\n' '#l10n 2 (GB Hello World)\n'
'#l10n 3 (Hello World on Friday, January 1, 1960)\n' '#l10n 3 (Hello GB fallback World)\n'
'#l10n 4 (Hello world argument on 1/1/1960 at 00:00)\n' '#l10n 4 (Hello World)\n'
'#l10n 5 (Hello World from 1960 to 2020)\n' '#l10n 5 (Hello World)\n'
'#l10n 6 (Hello for 123)\n' '#l10n 6 (Hello World)\n'
'#l10n 7 (Hello for price USD123.00)\n' '#l10n 7 (Hello World on Friday, January 1, 1960)\n'
'#l10n 8 (Hello)\n' '#l10n 8 (Hello world argument on 1/1/1960 at 00:00)\n'
'#l10n 9 (Hello World)\n' '#l10n 9 (Hello World from 1960 to 2020)\n'
'#l10n 10 (Hello two worlds)\n' '#l10n 10 (Hello for 123)\n'
'#l10n 11 (Hello on Friday, January 1, 1960)\n' '#l10n 11 (Hello for price USD123.00)\n'
'#l10n 12 (Hello World, on Friday, January 1, 1960)\n' '#l10n 12 (Hello)\n'
'#l10n 13 (Hello two worlds, on Friday, January 1, 1960)\n' '#l10n 13 (Hello World)\n'
'#l10n 14 (Hello)\n' '#l10n 14 (Hello two worlds)\n'
'#l10n 15 (Hello new World)\n' '#l10n 15 (Hello)\n'
'#l10n 16 (Hello two new worlds)\n' '#l10n 16 (Hello new World)\n'
'#l10n 17 (Hello other 0 worlds, with a total of 100 citizens)\n' '#l10n 17 (Hello two new worlds)\n'
'#l10n 18 (Hello World of 101 citizens)\n' '#l10n 18 (Hello on Friday, January 1, 1960)\n'
'#l10n 19 (Hello two worlds with 102 total citizens)\n' '#l10n 19 (Hello World, on Friday, January 1, 1960)\n'
'#l10n 20 ([Hello] #World#)\n' '#l10n 20 (Hello two worlds, on Friday, January 1, 1960)\n'
'#l10n 21 ([Hello] -World- #123#)\n' '#l10n 21 (Hello other 0 worlds, with a total of 100 citizens)\n'
'#l10n END\n' '#l10n 22 (Hello World of 101 citizens)\n'
'#l10n 23 (Hello two worlds with 102 total citizens)\n'
'#l10n 24 ([Hello] -World- #123#)\n'
'#l10n END\n'
); );
}); });
} }
...@@ -16,6 +16,8 @@ class GenL10nProject extends Project { ...@@ -16,6 +16,8 @@ class GenL10nProject extends Project {
Future<void> setUpIn(Directory dir) { Future<void> setUpIn(Directory dir) {
this.dir = dir; this.dir = dir;
writeFile(globals.fs.path.join(dir.path, 'lib', 'l10n', 'app_en.arb'), appEn); writeFile(globals.fs.path.join(dir.path, 'lib', 'l10n', 'app_en.arb'), appEn);
writeFile(globals.fs.path.join(dir.path, 'lib', 'l10n', 'app_en_CA.arb'), appEnCa);
writeFile(globals.fs.path.join(dir.path, 'lib', 'l10n', 'app_en_GB.arb'), appEnGb);
return super.setUpIn(dir); return super.setUpIn(dir);
} }
...@@ -40,44 +42,85 @@ import 'package:flutter/material.dart'; ...@@ -40,44 +42,85 @@ import 'package:flutter/material.dart';
import 'l10n/app_localizations.dart'; import 'l10n/app_localizations.dart';
class LocaleBuilder extends StatelessWidget {
const LocaleBuilder({ Key key, this.locale, this.callback }) : super(key: key);
final Locale locale;
final void Function (BuildContext context) callback;
@override build(BuildContext context) {
return Localizations.override(
locale: locale,
context: context,
child: Builder(
builder: (BuildContext context) {
callback(context);
return Container();
},
),
);
}
}
class Home extends StatelessWidget { class Home extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
try { final List<String> results = [];
final AppLocalizations localizations = AppLocalizations.of(context); return Row(
final List<String> results = <String>[ children: <Widget>[
'${localizations.helloWorld}', LocaleBuilder(
'${localizations.hello("World")}', locale: Locale('en', 'CA'),
'${localizations.greeting("Hello", "World")}', callback: (BuildContext context) {
'${localizations.helloWorldOn(DateTime(1960))}', results.add(AppLocalizations.of(context).helloWorld);
'${localizations.helloOn("world argument", DateTime(1960), DateTime(1960))}', results.add(AppLocalizations.of(context).hello("CA fallback World"));
'${localizations.helloWorldDuring(DateTime(1960), DateTime(2020))}', },
'${localizations.helloFor(123)}', ),
'${localizations.helloCost("price", 123)}', LocaleBuilder(
'${localizations.helloWorlds(0)}', locale: Locale('en', 'GB'),
'${localizations.helloWorlds(1)}', callback: (BuildContext context) {
'${localizations.helloWorlds(2)}', results.add(AppLocalizations.of(context).helloWorld);
'${localizations.helloWorldsOn(0, DateTime(1960))}', results.add(AppLocalizations.of(context).hello("GB fallback World"));
'${localizations.helloWorldsOn(1, DateTime(1960))}', },
'${localizations.helloWorldsOn(2, DateTime(1960))}', ),
'${localizations.helloAdjectiveWorlds(0, "new")}', LocaleBuilder(
'${localizations.helloAdjectiveWorlds(1, "new")}', locale: Locale('en'),
'${localizations.helloAdjectiveWorlds(2, "new")}', callback: (BuildContext context) {
'${localizations.helloWorldPopulation(0, 100)}', int n = 0;
'${localizations.helloWorldPopulation(1, 101)}', try {
'${localizations.helloWorldPopulation(2, 102)}', final AppLocalizations localizations = AppLocalizations.of(context);
'${localizations.helloWorldInterpolation("Hello", "World")}', results.addAll(<String>[
'${localizations.helloWorldsInterpolation(123, "Hello", "World")}', '${localizations.helloWorld}',
]; '${localizations.hello("World")}',
int n = 0; '${localizations.greeting("Hello", "World")}',
for (final String result in results) { '${localizations.helloWorldOn(DateTime(1960))}',
print('#l10n $n ($result)\n'); '${localizations.helloOn("world argument", DateTime(1960), DateTime(1960))}',
n += 1; '${localizations.helloWorldDuring(DateTime(1960), DateTime(2020))}',
} '${localizations.helloFor(123)}',
} finally { '${localizations.helloCost("price", 123)}',
print('#l10n END\n'); '${localizations.helloWorlds(0)}',
} '${localizations.helloWorlds(1)}',
return Container(); '${localizations.helloWorlds(2)}',
'${localizations.helloAdjectiveWorlds(0, "new")}',
'${localizations.helloAdjectiveWorlds(1, "new")}',
'${localizations.helloAdjectiveWorlds(2, "new")}',
'${localizations.helloWorldsOn(0, DateTime(1960))}',
'${localizations.helloWorldsOn(1, DateTime(1960))}',
'${localizations.helloWorldsOn(2, DateTime(1960))}',
'${localizations.helloWorldPopulation(0, 100)}',
'${localizations.helloWorldPopulation(1, 101)}',
'${localizations.helloWorldPopulation(2, 102)}',
'${localizations.helloWorldsInterpolation(123, "Hello", "World")}',
]);
for (final String result in results) {
print('#l10n $n ($result)\n');
n += 1;
}
}
finally {
print('#l10n END\n');
}
},
),
],
);
} }
} }
...@@ -245,5 +288,19 @@ void main() { ...@@ -245,5 +288,19 @@ void main() {
} }
} }
} }
''';
final String appEnCa = r'''
{
"@@locale": "en_CA",
"helloWorld": "CA Hello World"
}
''';
final String appEnGb = r'''
{
"@@locale": "en_GB",
"helloWorld": "GB Hello World"
}
'''; ''';
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment