Skip to content

Commit 2b49856

Browse files
author
Shi-Hao Hong
authored
Sort Localization generation output (flutter#44743)
* Sort Localization generation output - When creating locales that were assumed from existing locales, the file that is used is non-deterministic. This adds a sort to the iterator to ensure that the same existing locale is used to generate the assumed locale - When generating material, cupertino and date localizations, the generated getters were not sorted. This introduces an alphabetic sort * remove main.dart.snapshot
1 parent d39e2bb commit 2b49856

File tree

4 files changed

+172
-168
lines changed

4 files changed

+172
-168
lines changed

dev/tools/localization/gen_localizations.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ String generateArbBasedLocalizationSubclasses({
9999
}
100100
languageToLocales[locale.languageCode] ??= <LocaleInfo>[];
101101
languageToLocales[locale.languageCode].add(locale);
102-
allResourceIdentifiers.addAll(localeToResources[locale].keys);
102+
allResourceIdentifiers.addAll(localeToResources[locale].keys.toList()..sort());
103103
}
104104

105105
// We generate one class per supported language (e.g.
@@ -155,7 +155,7 @@ String generateArbBasedLocalizationSubclasses({
155155
));
156156
output.writeln(generateConstructor(scriptBaseLocale));
157157
final Map<String, String> scriptResources = localeToResources[scriptBaseLocale];
158-
for (String key in scriptResources.keys) {
158+
for (String key in scriptResources.keys.toList()..sort()) {
159159
if (languageResources[key] == scriptResources[key])
160160
continue;
161161
final Map<String, dynamic> attributes = localeToResourceAttributes[canonicalLocale][key];

dev/tools/localization/localizations_utils.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ import 'package:meta/meta.dart';
1212
typedef HeaderGenerator = String Function(String regenerateInstructions);
1313
typedef ConstructorGenerator = String Function(LocaleInfo locale);
1414

15+
int sortFilesByPath (FileSystemEntity a, FileSystemEntity b) {
16+
return a.path.compareTo(b.path);
17+
}
18+
1519
/// Simple data class to hold parsed locale. Does not promise validity of any data.
1620
class LocaleInfo implements Comparable<LocaleInfo> {
1721
LocaleInfo({
@@ -153,7 +157,7 @@ void loadMatchingArbsIntoBundleMaps({
153157
/// overwrite the existing assumed data.
154158
final Set<LocaleInfo> assumedLocales = <LocaleInfo>{};
155159

156-
for (FileSystemEntity entity in directory.listSync()) {
160+
for (FileSystemEntity entity in directory.listSync().toList()..sort(sortFilesByPath)) {
157161
final String entityPath = entity.path;
158162
if (FileSystemEntity.isFileSync(entityPath) && filenamePattern.hasMatch(entityPath)) {
159163
final String localeString = filenamePattern.firstMatch(entityPath)[1];

packages/flutter_localizations/lib/src/l10n/generated_cupertino_localizations.dart

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10685,43 +10685,46 @@ class CupertinoLocalizationSrLatn extends CupertinoLocalizationSr {
1068510685
);
1068610686

1068710687
@override
10688-
String get datePickerHourSemanticsLabelFew => r'$hour sata';
10688+
String get alertDialogLabel => r'Obaveštenje';
1068910689

1069010690
@override
10691-
String get datePickerMinuteSemanticsLabelFew => r'$minute minuta';
10691+
String get anteMeridiemAbbreviation => r'pre podne';
1069210692

1069310693
@override
10694-
String get timerPickerHourLabelFew => r'sata';
10694+
String get copyButtonLabel => r'Kopiraj';
1069510695

1069610696
@override
10697-
String get timerPickerMinuteLabelFew => r'min';
10697+
String get cutButtonLabel => r'Iseci';
1069810698

1069910699
@override
10700-
String get timerPickerSecondLabelFew => r'sek';
10700+
String get datePickerHourSemanticsLabelFew => r'$hour sata';
1070110701

1070210702
@override
1070310703
String get datePickerHourSemanticsLabelOne => r'$hour sat';
1070410704

1070510705
@override
1070610706
String get datePickerHourSemanticsLabelOther => r'$hour sati';
1070710707

10708+
@override
10709+
String get datePickerMinuteSemanticsLabelFew => r'$minute minuta';
10710+
1070810711
@override
1070910712
String get datePickerMinuteSemanticsLabelOne => r'1 minut';
1071010713

1071110714
@override
1071210715
String get datePickerMinuteSemanticsLabelOther => r'$minute minuta';
1071310716

1071410717
@override
10715-
String get anteMeridiemAbbreviation => r'pre podne';
10718+
String get pasteButtonLabel => r'Nalepi';
1071610719

1071710720
@override
1071810721
String get postMeridiemAbbreviation => r'po podne';
1071910722

1072010723
@override
10721-
String get todayLabel => r'Danas';
10724+
String get selectAllButtonLabel => r'Izaberi sve';
1072210725

1072310726
@override
10724-
String get alertDialogLabel => r'Obaveštenje';
10727+
String get timerPickerHourLabelFew => r'sata';
1072510728

1072610729
@override
1072710730
String get timerPickerHourLabelOne => r'sat';
@@ -10730,28 +10733,25 @@ class CupertinoLocalizationSrLatn extends CupertinoLocalizationSr {
1073010733
String get timerPickerHourLabelOther => r'sati';
1073110734

1073210735
@override
10733-
String get timerPickerMinuteLabelOne => r'min';
10734-
10735-
@override
10736-
String get timerPickerMinuteLabelOther => r'min';
10736+
String get timerPickerMinuteLabelFew => r'min';
1073710737

1073810738
@override
10739-
String get timerPickerSecondLabelOne => r'sek';
10739+
String get timerPickerMinuteLabelOne => r'min';
1074010740

1074110741
@override
10742-
String get timerPickerSecondLabelOther => r'sek';
10742+
String get timerPickerMinuteLabelOther => r'min';
1074310743

1074410744
@override
10745-
String get cutButtonLabel => r'Iseci';
10745+
String get timerPickerSecondLabelFew => r'sek';
1074610746

1074710747
@override
10748-
String get copyButtonLabel => r'Kopiraj';
10748+
String get timerPickerSecondLabelOne => r'sek';
1074910749

1075010750
@override
10751-
String get pasteButtonLabel => r'Nalepi';
10751+
String get timerPickerSecondLabelOther => r'sek';
1075210752

1075310753
@override
10754-
String get selectAllButtonLabel => r'Izaberi sve';
10754+
String get todayLabel => r'Danas';
1075510755
}
1075610756

1075710757
/// The translations for Swedish (`sv`).
@@ -12586,46 +12586,46 @@ class CupertinoLocalizationZhHant extends CupertinoLocalizationZh {
1258612586
);
1258712587

1258812588
@override
12589-
String get datePickerHourSemanticsLabelOne => r'$hour 點';
12589+
String get alertDialogLabel => r'通知';
1259012590

1259112591
@override
12592-
String get datePickerHourSemanticsLabelOther => r'$hour 點';
12592+
String get copyButtonLabel => r'複製';
1259312593

1259412594
@override
12595-
String get datePickerMinuteSemanticsLabelOne => r'1 分鐘';
12595+
String get cutButtonLabel => r'剪下';
1259612596

1259712597
@override
12598-
String get datePickerMinuteSemanticsLabelOther => r'$minute 分鐘';
12598+
String get datePickerDateTimeOrderString => r'date_dayPeriod_time';
1259912599

1260012600
@override
12601-
String get datePickerDateTimeOrderString => r'date_dayPeriod_time';
12601+
String get datePickerHourSemanticsLabelOne => r'$hour 點';
1260212602

1260312603
@override
12604-
String get alertDialogLabel => r'通知';
12604+
String get datePickerHourSemanticsLabelOther => r'$hour 點';
1260512605

1260612606
@override
12607-
String get timerPickerHourLabelOne => r'小時';
12607+
String get datePickerMinuteSemanticsLabelOne => r'1 分鐘';
1260812608

1260912609
@override
12610-
String get timerPickerHourLabelOther => r'小時';
12610+
String get datePickerMinuteSemanticsLabelOther => r'$minute 分鐘';
1261112611

1261212612
@override
12613-
String get timerPickerMinuteLabelOne => r'分鐘';
12613+
String get pasteButtonLabel => r'貼上';
1261412614

1261512615
@override
12616-
String get timerPickerMinuteLabelOther => r'分鐘';
12616+
String get selectAllButtonLabel => r'全選';
1261712617

1261812618
@override
12619-
String get cutButtonLabel => r'剪下';
12619+
String get timerPickerHourLabelOne => r'小時';
1262012620

1262112621
@override
12622-
String get copyButtonLabel => r'複製';
12622+
String get timerPickerHourLabelOther => r'小時';
1262312623

1262412624
@override
12625-
String get pasteButtonLabel => r'貼上';
12625+
String get timerPickerMinuteLabelOne => r'分鐘';
1262612626

1262712627
@override
12628-
String get selectAllButtonLabel => r'全選';
12628+
String get timerPickerMinuteLabelOther => r'分鐘';
1262912629
}
1263012630

1263112631
/// The translations for Chinese, as used in Hong Kong, using the Han script (`zh_Hant_HK`).

0 commit comments

Comments
 (0)