NSBundle PreferredLocalizations 不返回可用的最具体的本地化

BWW*_*BWW 5 localization ios

我对特定文件有“en”和“en-AU”(澳大利亚英语)本地化。

虽然当前语言环境是“en_AU”,但[[NSBundle mainBundle] localizations]会生成我期望的本地化集:

( "en-AU", "en" )
Run Code Online (Sandbox Code Playgroud)

然而,[[NSBundle mainBundle] preferredLocalizations](真正重要的)只产生:

( "en" )
Run Code Online (Sandbox Code Playgroud)

为什么首选列表中完全省略了最具体的受支持本地化,而是返回了更通用的本地化?

有没有办法可以NSBundle优先考虑最精确的可用本地化而不是不太具体的选项?

Eri*_*k B 0

我猜这是因为您的手机设置为使用英语而不是澳大利亚英语。我查看了手机上支持的语言列表,但找不到澳大利亚英语。只是英语和英式英语,所以这可能就是原因。

编辑:

我认为你应该阅读以下内容: https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPInternational/Articles/LanguageDesignations.html#//apple_ref/doc/uid/20002144-BBCEGGFF

据我了解,这是:

NSLog(@"%@", [[NSLocale currentLocale] localeIdentifier]);
Run Code Online (Sandbox Code Playgroud)

printsen_AU这和 .prints 不一样en-AU。如果您阅读了链接的文档,您已经知道其中的区别。例如,en-GB_AU表示在澳大利亚使用的英式英语,这对于在澳大利亚的英国人来说是合适的。

无论如何,您是否尝试在捆绑包中更改en-AU为?en_AU