【发布时间】:2016-12-01 09:11:57
【问题描述】:
根据Language and Locale 中的文档,从 Android 7.0(API 级别 24)开始对资源解决策略进行了改进,下表易于理解: Improved Resource-Resolution strategy
根据我的要求,我希望我的应用的默认语言为 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,它会选择默认字符串?
【问题讨论】:
-
它似乎仍在发生。我认为它特定于 en_CA。这似乎是一个平台错误。您是否有任何机会打开 Android 的错误?请在此处查看我们的讨论:Localization for Canada defaults to UK; should default to US
-
我在这里创建了一个错误报告:issuetracker.google.com/issues/64429534。随意建议更改以改进它,或评论/加注星标以便可以查看。谢谢。
标签: android localization locale android-resources android-7.0-nougat