未验证 提交 de3db5db 编写于 作者: G Gary Qian 提交者: GitHub

Locale -> LanguageRange conversion to be more general in Android platformResolvedLocale (#21350)

上级 3d0f1297
......@@ -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.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册