小编Sub*_*nha的帖子

当设备语言为 en_US 时,Android 7.0 Nougat 会选择默认字符串

根据语言和区域设置中的文档,Android 7.0(API 级别 24)对资源解析策略进行了改进,下表很容易理解: 改进的资源解析策略

根据我的要求,我希望我的应用程序的默认语言为 en_US。所以,我没有为 en_US 提供单独的资源。我还单独提供了 en_GB 资源。

现在,根据解析策略,如果我的设备的语言是 en_US,那么它查找资源的顺序是 en_US -> en -> en_GB -> default 这意味着对于 en 的所有语言环境,在我的情况下将选择 en_GB因为我没有单独的“en”资源,但是存在子“en_GB”。

但是,当我将设备语言选择为 en_US 时,它会正确选择默认语言(在我的情况下为 en_US)而不是 en_GB,这正是我在设备语言为 en_US 的情况下所需要的。When some other locale like en_IN or en_AU is selected, it picks up en_GB.

解决此问题的一种方法是我分别在 'en' 和 en_GB 中提供 en_US 字符串,这将导致我想要的行为。但是,当我选择 en_US 作为我的设备语言时,我无法理解为什么会选择默认字符串。

是否 en_US 是 android 的默认语言,每当 en_US 被选为设备的语言时,如果 en_US 未单独提供,它会选择默认字符串?

android locale localization android-resources android-7.0-nougat

6
推荐指数
1
解决办法
1405
查看次数