mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Locale -> LanguageRange conversion to be more general in Android platformResolvedLocale (flutter/engine#21350)
This commit is contained in:
parent
6d83eaebe2
commit
e714ae10db
@ -50,9 +50,15 @@ public class LocalizationPlugin {
|
||||
int localeCount = localeList.size();
|
||||
for (int index = 0; index < localeCount; ++index) {
|
||||
Locale locale = localeList.get(index);
|
||||
String localeString = locale.toString();
|
||||
// This string replacement converts the locale string into the ranges format.
|
||||
languageRanges.add(new Locale.LanguageRange(localeString.replace("_", "-")));
|
||||
// Convert locale string into language range format.
|
||||
String fullRange = locale.getLanguage();
|
||||
if (!locale.getScript().isEmpty()) {
|
||||
fullRange += "-" + locale.getScript();
|
||||
}
|
||||
if (!locale.getCountry().isEmpty()) {
|
||||
fullRange += "-" + locale.getCountry();
|
||||
}
|
||||
languageRanges.add(new Locale.LanguageRange(fullRange));
|
||||
languageRanges.add(new Locale.LanguageRange(locale.getLanguage()));
|
||||
languageRanges.add(new Locale.LanguageRange(locale.getLanguage() + "-*"));
|
||||
}
|
||||
|
||||
@ -120,6 +120,19 @@ public class LocalizationPluginTest {
|
||||
assertEquals(result[0], "it");
|
||||
assertEquals(result[1], "IT");
|
||||
assertEquals(result[2], "");
|
||||
|
||||
supportedLocales =
|
||||
new String[] {
|
||||
"zh", "CN", "Hans",
|
||||
"zh", "HK", "Hant",
|
||||
};
|
||||
localeList = new LocaleList(new Locale("zh", "CN"));
|
||||
when(config.getLocales()).thenReturn(localeList);
|
||||
result = flutterJNI.computePlatformResolvedLocale(supportedLocales);
|
||||
assertEquals(result.length, 3);
|
||||
assertEquals(result[0], "zh");
|
||||
assertEquals(result[1], "CN");
|
||||
assertEquals(result[2], "Hans");
|
||||
}
|
||||
|
||||
// This test should be synced with the version for API 26.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user