美文网首页
安卓 语言locale获取顺序有误

安卓 语言locale获取顺序有误

作者: wustzhy | 来源:发表于2022-12-28 17:44 被阅读0次

    用的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()确实没问题

    image.png

    并最后给了个结论
    从 Android 7.0 开始,系统语言支持多个,可手动排序,系统根据 App 本身支持的语言和手机出厂设置的语言等因素来调整 App 本身的默认语言。

    看到App 本身支持的语言这里,鬼使神差,我查一查zh、en发现 在packages.gradle有配置了enzh,难道是因为没有vi,所以vi被歧视了

    android {
        defaultConfig {
                resConfigs "en", "zh"
    ...    
    

    后来发现,真是这里导致的getConfiguration().getLocales()获取的语言顺序与实际不符。去掉这行 or 增加vi,就没问题了!!!

    相关文章

      网友评论

          本文标题:安卓 语言locale获取顺序有误

          本文链接:https://www.haomeiwen.com/subject/pdjzqdtx.html