【问题标题】:Android programmatically check if app is localized for a languageAndroid 以编程方式检查应用程序是否针对某种语言进行了本地化
【发布时间】:2016-04-20 06:33:03
【问题描述】:

我有一个应用需要提供以其他设备语言本地化的字符串。一旦我的应用知道其他设备的语言,它就会创建一个新的资源类。类似于这个question

如果语言不支持,刚创建的资源对象在获取字符串时会回退(假设其他设备设置为en_US):

  1. values-en-rUS/strings.xml
  2. values-en/strings.xml
  3. values/strings.xml

我想回退到我自己设备的语言,而不是第三次回退(假设我的设备设置为 es_ES):

  1. values-en-rUS/strings.xml
  2. values-en/strings.xml
  3. values-es-rES/strings.xml
  4. values-es/strings.xml
  5. values/strings.xml

如果我可以以编程方式检查我的应用是否支持某种语言/地区,我可以很容易地做到这一点。找到了这个AssetManager.getLocales(),但认为它没有帮助。

有没有办法实现所需的回退或检查应用是否本地化为特定语言/地区?

【问题讨论】:

  • "或一种检查应用程序是否本地化为特定语言/地区的方法?" -- 因为您是编写应用程序的人,并且您知道将其本地化为哪些语言,所以只需将该信息编码到您的应用程序中的某个位置。
  • 没错,但正是我想要避免的。此代码应在具有不同支持语言集的不同应用程序上运行。如果这可以通过编程方式完成,它将减少维护和故障风险。

标签: android localization


【解决方案1】:

here。对其进行了测试并获得了正确的设备语言环境作为两个符号字符串。代码是:

String Language = Locale.getDefault().getLanguage() //returns eg. "de" for german

【讨论】:

  • 了解设备区域设置无助于获得应用程序本地化。它可能不匹配。
  • 哦,对了,我误解了你的问题,抱歉。如果它是您的应用程序,您可以尝试在 SharedPreferences 中保存有关可用本地化的信息。所以每次你创建一个新的资源类时,你都会将新的本地化保存在一个字符串中。
  • 慢慢地我相信这是唯一的方法。 CommonsWare 提到了同样的事情。很遗憾我什至无法检查 res 文件夹的子文件夹。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 2014-09-06
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
相关资源
最近更新 更多