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

How to list only configured languages in Android

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

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

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

中列出的那些

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

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

谢谢!

...this lists all possible languages supported by the device. Instead, I want to acquire only those listed within res/.

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

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

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

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

Is there a built-in function from the API, should I resort to hard-coding a string-array?

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