我遇到的行为是我无法通过使用Android官方参考资源解析策略来解释的。我使用的是Android 7.1.1。
我的应用有以下资源:
系统语言列表如下:
问题:根据Resource Resolution example我期望应用配置区域设置(Resources.Configuration.Locale)将成为默认区域设置。但令人惊讶的是,Android仍然是be_BY。 当这两种语言的顺序被还原时(1. kk_KZ,2。be_BY),Android将配置区域设置更改为be_BY,尽管我的应用程序根本没有be_BY或kk_KZ资源。该应用程序引用en资源后。
只要我将值-be-rBY和values-kk-rKZ文件夹添加到我的应用程序项目中,Android就会正确设置语言环境 - be_BY用于语言列表
和kk_KZ用于语言列表
基于这个事实,我假设Android根据指定的资源设置应用程序区域设置,但它与描述的问题
相矛盾所以,这是我的问题:我的理解是否正确?为什么会出现这种情况?
答案 0 :(得分:0)
最后我发现了。我的应用使用了Google Play服务,该服务已经过本地化,但没有kk_KZ本地化。资源也被放入resources.arsc文件中。因此,在Android无法找到kk_KZ资源后,它会尝试使用下一种语言 - 在我的情况下为be_BY并停止在be_BY语言环境中搜索。 我还在Android Studio演示应用中检查了这一点,发现它的行为是一样的。所以,这似乎是一种原生行为。