【问题标题】:Android How to get system's installed localesAndroid 如何获取系统已安装的语言环境
【发布时间】:2016-03-23 23:42:01
【问题描述】:

有什么方法可以从 Android 设备获取系统安装的语言环境。我尝试使用来自 android Get Available localesgetAvailableLocales (),但它不适用于 Asus、Carbon、Lava、Intex 等设备。

例如,如果我在 Nexus 设备中调用 getAvailableLocales(),我可以获取 Settings-> Language&Input -> Language 中的语言环境

但如果我在任何 Carbon 设备上执行相同操作,而不是从 Settings-> Language&Input -> Language 获取语言,我会得到一个不同的列表。

我只想要设备中已安装的语言列表,而不是操作系统支持的所有语言。

【问题讨论】:

  • 您能否详细说明这些设备“不工作”的含义?它只是简单地返回一个空数组,一个 only Locale.US 的数组,它会崩溃吗,它没有返回您期望可用的语言环境吗?
  • 我更新了我的问题,请检查
  • 好的,我能问一下为什么你需要语言环境吗?您应该使用用户选择的任何语言环境(即默认语言环境)显示内容并写入网络或使用Locale.US,如documented in the Locale docs。我记得你正在经历的事情(语言环境!= 安装的语言),但我不确定这是怎么回事。

标签: android locale


【解决方案1】:

如果您想要系统支持的语言环境,请使用

Locale.getAvailableLocales() 

如果您希望系统支持和设备启用的语言环境

Resources.getSystem().getAssets().getLocales()

通过使用第一个,您无法确定该设备是否支持所有语言环境。因为他们都是用那个 Android ROM 进来的。

但后一个总是有把握的。 因为它只提供为该特定设备安装的所有语言环境(字体)。这些语言环境(字体)由该设备制造商放置。

我在here解释了更多

【讨论】:

    【解决方案2】:

    Locale.getAvailableLocales() 方法是通用的“基本”语言环境集。来自文档:

    大多数区域设置敏感类都提供自己的 getAvailableLocales 方法,应该优先于这种通用方法

    强调我的。

    您可以通过查询相应类的getAvailableLocales() 方法来获取可用于特定用例的语言环境。具体来说:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多