Android 如何获取系统安装的语言环境
Android How to get system's installed locales
有没有办法从 Android 设备获取系统安装的语言环境。我尝试使用 android Get Available locales 中的 getAvailableLocales ()
,但它不适用于 Asus、Carbon、Lava、Intex 等设备。
例如,如果我在 Nexus 设备中调用 getAvailableLocales()
,我可以获得 Settings-> Language&Input -> Language
中的语言环境
但是如果我在任何 Carbon 设备上做同样的事情,而不是从 Settings-> Language&Input -> Language
获取语言,我会得到一个不同的列表。
我只想要设备中已安装的语言列表,而不是 OS 支持的所有语言。
Locale.getAvailableLocales()
方法是通用的 'base' 语言环境集。来自文档:
Most locale-sensitive classes offer their own getAvailableLocales
method, which should be preferred over this general purpose method.
强调我的。
您可以通过在适当的 class 上查询 getAvailableLocales()
方法来获取可用于特定用例的语言环境。具体来说:
如果您想要系统支持的语言环境,请使用
Locale.getAvailableLocales()
如果您想要系统支持和设备启用的语言环境
Resources.getSystem().getAssets().getLocales()
通过使用第一个,您无法确定该设备是否支持所有语言环境。因为他们都带有 Android ROM。
但后者总是一个可靠的机会。
因为它只提供为该特定设备安装的所有语言环境(字体)。这些语言环境(字体)由该设备制造商放置。
我在 here
中解释了更多
有没有办法从 Android 设备获取系统安装的语言环境。我尝试使用 android Get Available locales 中的 getAvailableLocales ()
,但它不适用于 Asus、Carbon、Lava、Intex 等设备。
例如,如果我在 Nexus 设备中调用 getAvailableLocales()
,我可以获得 Settings-> Language&Input -> Language
但是如果我在任何 Carbon 设备上做同样的事情,而不是从 Settings-> Language&Input -> Language
获取语言,我会得到一个不同的列表。
我只想要设备中已安装的语言列表,而不是 OS 支持的所有语言。
Locale.getAvailableLocales()
方法是通用的 'base' 语言环境集。来自文档:
Most locale-sensitive classes offer their own
getAvailableLocales
method, which should be preferred over this general purpose method.
强调我的。
您可以通过在适当的 class 上查询 getAvailableLocales()
方法来获取可用于特定用例的语言环境。具体来说:
如果您想要系统支持的语言环境,请使用
Locale.getAvailableLocales()
如果您想要系统支持和设备启用的语言环境
Resources.getSystem().getAssets().getLocales()
通过使用第一个,您无法确定该设备是否支持所有语言环境。因为他们都带有 Android ROM。
但后者总是一个可靠的机会。 因为它只提供为该特定设备安装的所有语言环境(字体)。这些语言环境(字体)由该设备制造商放置。
我在 here
中解释了更多