按照文档中Language and Locale已经出现了改善从Android 7.0(API级别24),这是很容易下表,了解资源解决策略: Improved Resource-Resolution strategy的Android 7.0牛轧糖拿起默认的字符串时,设备语言是en_US
根据我的要求,我希望我的应用的默认语言为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时所需要的。当选择一些其他语言环境(如en_IN或en_AU)时,会选取en_GB。
解决此问题的一种方法是,我分别在'en'和en_GB中提供en_US字符串,这将导致我期望的行为。但是,当我选择en_US作为我的设备语言时,我无法理解为什么选择默认字符串。
是不是en_US是Android的默认语言,并且每当选择en_US作为设备的语言时,如果en_US不是单独提供,它将拾取默认字符串?
它似乎仍在发生。我认为这是特定于en_CA。这似乎是一个平台错误。你有没有机会打开Android的错误?请参阅我们的讨论:[加拿大本地化默认为英国;应该默认为美国](https://stackoverflow.com/q/45511769/1306419) –
我在这里创建了一个错误报告:issuetracker.google.com/issues/64429534。随意提出改进建议,或对其进行评论/明星,以便可以查看。谢谢。 –