【问题标题】:How to determine the displayed language in Android如何确定Android中显示的语言
【发布时间】:2016-08-26 14:44:07
【问题描述】:

假设我有一个默认翻译成德语和英语的应用程序。它现在在具有法语语言环境的设备上打开。由于没有可用的法语翻译,该应用程序将回退到英语。我如何确定该语言?我不是指系统语言,而是主动显示的语言。我找到了that post,这是一个很好的解决方法,但有没有更好的方法?

我需要以适当的语言从服务器请求数据,并且以与应用使用的语言不同的语言获取数据是没有意义的。

进一步的想法: 也许没有这样的方法,因为它无法清楚地定义显示语言是什么,因为语言回退是按字符串处理的。例如。如果 50% 的字符串被翻译并且 50% 将默认为后备,那么显示语言是什么?但是,如果有一种方法至少可以告诉我们至少有一个翻译的第一个后备语言,那就太好了。

欢迎任何提示、想法、经验!

编辑:我需要以编程方式获取显示的语言

【问题讨论】:

    标签: android localization locale


    【解决方案1】:

    如果我没记错的话,只有一个备用:string.xml 文件。 这意味着:

    • 您的应用获取设备区域设置并在相应的 string.xml 文件中搜索字符串
    • 如果正确的本地化文件中不存在一个字符串,则应用程序会在主 string.xml 文件中搜索相应的字符串
    • 如果整个本地化文件(对应于设备区域设置)不存在,应用程序将直接回退到主 string.xml 文件

    您在应用中使用的语言不必与设备语言相同。您可以使用此代码更改应用的语言环境

    Resources res = getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    android.content.res.Configuration conf = res.getConfiguration();
    conf.locale = new Locale(lang.toLowerCase());
    res.updateConfiguration(conf, dm);
    

    所以我认为总是只有一个活动区域设置(设备之一或应用程序之一),如果活动区域设置不存在字符串资源,则应用程序只能回退到主 string.xml 文件。

    【讨论】:

    猜你喜欢
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多