android - 如何知道 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
.
这种方法存在吗?
解决方案
将语言名称放在两个 strings.xml 文件中。例如,作为语言名称。当您获得 R.string.languageName 的字符串时,它将是 Android 在您支持的语言中选择的语言。
推荐阅读
- python - 当输入字符串/对象格式不正确时,如何将对象或字符串转换为时间格式,即所有行都不存在 %H
- ansible - Ansible playbook 通过终端执行时成功运行,但在 Gitlab CI/CD 管道中失败
- python - 在为图像着色准备数据时,colab 中的会话崩溃
- java - 将多个数据库与 Spring Data JPA 一起使用时,不会发生名为“ConfigurationClassPostProcessor.importRegistry”的 bean 异常
- security - 是否防篡改?
- mysql - pgloader:堆耗尽,游戏结束。问题
- liferay - Liferay 7.3:如何在由管理员控制的主题中制作菜单项
- sass - 如何在 sass 中动态创建颜色变量
- python - 在 PyGame 中使用 GIF
- c++ - C++ 位移在相反方向上具有相同的常数,具有不同的结果与较小的代码更改