首页 > 解决方案 > 如何知道 Android 是决定使用本地化的 strings.xml 文件还是默认文件?

问题描述

这个问题的动机来自另一个问题:

如何获取我的应用程序使用的当前语言?(不是设置中指定的设备语言。我想要Android 解析为我的应用程序使用的语言)。

这个问题已经在网站上被问过好几次了,但它没有考虑这个极端情况:

想象一下,用户在他的设备中只有一种首选语言:例如德语。

我的应用程序有两个strings.xml文件:默认一个,一个法语 ( values-fr/strings.xml)。

strings.xml显然,在这种情况下,Android 将决定使用默认值。

但是,如果我执行以下任何操作,它将返回German

Locale.getDefault()
getResources().getConfiguration().getLocales().get(0)
getResources().getConfiguration().locale.
(以及我在网站上找到的许多其他建议)

谁告诉 Android 默认strings.xml文件是德语的?为什么会做出这样的假设?默认文件可以是西班牙语、意大利语、波兰语……随便什么。

理想情况下,我想要一个null在这种情况下返回的方法。一些方法告诉我没有找到 German 和 Android 的匹配项,必须回退到默认的strings.xml.

这种方法存在吗?

标签: android

解决方案


将语言名称放在两个 strings.xml 文件中。例如,作为语言名称。当您获得 R.string.languageName 的字符串时,它将是 Android 在您支持的语言中选择的语言。


推荐阅读