如何在 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)。
一些特定的语言已在我的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)。