如何仅列出 Android 中已配置的语言

问题描述

在我的 Android 应用程序的资源中建立了一些特定的语言(例如 res/values-es/strings.xml)。如果用户愿意,我希望用户能够从这些可能的语言中进行选择,以设置他们的首选语言。

我想通过自动方式获取语言列表(以防以后添加新语言)。

就其本身而言,getResources().getAssets().getLocales() 是不可接受的,因为它列出了设备支持所有可能的语言。相反,我只想获取 res/ 中列出的那些。

我该怎么做?是否有来自 API 的内置函数,我应该使用硬编码字符串数组吗?

最低 Android API:21,当前 Android API:30,语言:Java

谢谢!

解决方法

...这列出了设备支持的所有可能的语言。相反,我只想获取 res/ 中列出的那些。

那不是真的,抱歉。另外,事情没那么简单:

  • 您正在使用库,其中一些可能有翻译资源,其语言可能是您自己源代码中的语言的超集

  • App Bundle 只会向用户提供您自己语言的一个子集

与应用模块的 res/ 目录树中的实际内容相比,用户拥有的内容之间的关系很复杂。

API 中是否有内置函数,我应该对字符串数组进行硬编码吗?

是的,您应该计划维护自己的语言名册。您将来可能需要为此进行额外的工程工作(例如,针对 App Bundle)。