如何获取用户已添加到其设备的语言列表?在下面的示例中,用户转到设备设置并添加了两种语言。如何以编程方式获取此列表?

谢谢!
发布于 2020-01-31 13:28:27
LocaleListCompat llc = ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration());
for (int i=0; i<llc.size(); i++){
System.out.println(llc.get(i).getDisplayLanguage());
}这与版本具有向后兼容性。而llc将拥有用户选择的所有语言。
如果您想要支持的语言的完整列表,您可以使用Locale获取
for (Locale locale : Locale.getAvailableLocales()) {
System.out.println("HELLO " + locale.getDisplayLanguage());
}发布于 2020-01-31 09:02:39
在Android7.0(API24级)及更高版本上,您应该调用LocaleList.getDefault()。在安卓的早期版本中,只有一种语言可以选择,你可以通过Locale.getDefault()获得。
发布于 2020-01-31 11:56:28
对于用户选择的语言-
private fun getSystemLocale(): String {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return LocaleList.getDefault().get(0).getLanguage();
} else {
return Locale.getDefault.getLanguage();
}
}如果您想使用以下选项获取设备的选定语言:
Locale.getDefault().getDisplayLanguage();
Locale.getDefault().getLanguage() ---> en
Locale.getDefault().getISO3Language() ---> eng
Locale.getDefault().getCountry() ---> US
Locale.getDefault().getISO3Country() ---> USA
Locale.getDefault().getDisplayCountry() ---> United States
Locale.getDefault().getDisplayName() ---> English (United States)
Locale.getDefault().toString() ---> en_US
Locale.getDefault().getDisplayLanguage()---> English
Locale.getDefault().toLanguageTag() ---> en-UShttps://stackoverflow.com/questions/59996630
复制相似问题