如何确定Android

时间:2016-08-25 16:16:01

标签: android localization locale

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

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

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

欢迎任何提示,想法和经验!

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

1 个答案:

答案 0 :(得分:0)

如果我没记错,只有一个回退:string.xml文件。 这意味着:

  • 您的应用获取设备区域设置并在相应的string.xml文件中搜索字符串
  • 如果正确的本地化文件中没有一个字符串,则app会在主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);

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