mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Remove stripping scriptCodes for localization. (#83903)
This commit is contained in:
parent
430bfac41c
commit
f8d73be84c
@ -16,29 +16,9 @@ bool _dateIntlDataInitialized = false;
|
||||
/// invocations have no effect.
|
||||
void loadDateIntlDataIfNotLoaded() {
|
||||
if (!_dateIntlDataInitialized) {
|
||||
// TODO(garyq): Add support for scriptCodes. Do not strip scriptCode from string.
|
||||
|
||||
// Keeps track of initialized locales. This can only happen if a locale
|
||||
// with a stripped scriptCode has already been initialized. The set of
|
||||
// initialized locales should be removed when scriptCode stripping is
|
||||
// removed.
|
||||
final Set<String> initializedLocales = <String>{};
|
||||
date_localizations.dateSymbols
|
||||
.cast<String, Map<String, dynamic>>()
|
||||
.forEach((String locale, Map<String, dynamic> data) {
|
||||
// Strip scriptCode from the locale, as we do not distinguish between scripts
|
||||
// for dates.
|
||||
final List<String> codes = locale.split('_');
|
||||
String? countryCode;
|
||||
if (codes.length == 2) {
|
||||
countryCode = codes[1].length < 4 ? codes[1] : null;
|
||||
} else if (codes.length == 3) {
|
||||
countryCode = codes[1].length < codes[2].length ? codes[1] : codes[2];
|
||||
}
|
||||
locale = codes[0] + (countryCode != null ? '_$countryCode' : '');
|
||||
if (initializedLocales.contains(locale))
|
||||
return;
|
||||
initializedLocales.add(locale);
|
||||
// Perform initialization.
|
||||
assert(date_localizations.datePatterns.containsKey(locale));
|
||||
final intl.DateSymbols symbols = intl.DateSymbols.deserializeFromMap(data);
|
||||
|
||||
@ -158,6 +158,23 @@ void main() {
|
||||
expect(formatted[DateType.full], 'Mittwoch, 1. August 2018');
|
||||
expect(formatted[DateType.monthYear], 'August 2018');
|
||||
});
|
||||
|
||||
testWidgets('formats dates in Serbian', (WidgetTester tester) async {
|
||||
final Map<DateType, String> formatted = await formatDate(tester, const Locale('sr'), DateTime(2018, 8, 1));
|
||||
expect(formatted[DateType.year], '2018.');
|
||||
expect(formatted[DateType.medium], 'сре 1. авг');
|
||||
expect(formatted[DateType.full], 'среда, 1. август 2018.');
|
||||
expect(formatted[DateType.monthYear], 'август 2018.');
|
||||
});
|
||||
|
||||
testWidgets('formats dates in Serbian (Latin)', (WidgetTester tester) async {
|
||||
final Map<DateType, String> formatted = await formatDate(tester,
|
||||
const Locale.fromSubtags(languageCode:'sr', scriptCode: 'Latn'), DateTime(2018, 8, 1));
|
||||
expect(formatted[DateType.year], '2018.');
|
||||
expect(formatted[DateType.medium], 'sre 1. avg');
|
||||
expect(formatted[DateType.full], 'sreda, 1. avgust 2018.');
|
||||
expect(formatted[DateType.monthYear], 'avgust 2018.');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user