用的react-native-i18n
,发现 getLanguages
方法获取的语言列表先后顺序不对
vi(越南语)似乎招到了歧视,永远无法排在最前面。。。
居然搜不到 遇到同样问题的,情况如下
-
react-native-i18n
issue区根本没人遇到 顺序错误的 -
有另一种解决方案的,却发现
react-native-device-info
已不再支持getDeviceLocale
方法 -
Android 获取系统语言的实例(兼容7.0) 这篇指出了
getConfiguration().getLocales()
<u>此接口返回的语言顺序和用户定义的顺序不一定一致</u>
还提供了测试case,得出LocaleList.getDefault()
与真实设定的语言顺序一致
LocaleList localeList3 = LocaleList.getDefault();
for (int i = 0; i < localeList3.size(); i++) {
MLog.e(i + " >3> " + localeList3.get(i).getLanguage() + "-" + localeList3.get(i).getCountry());
}
实测 LocaleList.getDefault()
确实没问题
并最后给了个结论
从 Android 7.0 开始,系统语言支持多个,可手动排序,系统根据 App 本身支持的语言和手机出厂设置的语言等因素来调整 App 本身的默认语言。
看到App 本身支持的语言
这里,鬼使神差,我查一查zh、en发现 在packages.gradle
有配置了en
、zh
,难道是因为没有vi
,所以vi
被歧视了
android {
defaultConfig {
resConfigs "en", "zh"
...
后来发现,真是这里导致的getConfiguration().getLocales()
获取的语言顺序与实际不符。去掉这行 or 增加vi
,就没问题了!!!
网友评论