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

时间:2012-03-22 00:27:53

标签: ios localization

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

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

( "en-AU", "en" )

然而,[[NSBundle mainBundle] preferredLocalizations](实际上重要的那个)仅产生:

( "en" )

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

我是否有办法让NSBundle优先考虑最不精确的可用本地化,而不是特定的选项?

1 个答案:

答案 0 :(得分:0)

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

修改

我想你应该读到这个: https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPInternational/Articles/LanguageDesignations.html#//apple_ref/doc/uid/20002144-BBCEGGFF

据我了解,这:

NSLog(@"%@", [[NSLocale currentLocale] localeIdentifier]);

打印en_AU,这与en-AU不同。如果您已阅读链接文档,则您已经知道其中的差异。例如en-GB_AU表示在澳大利亚使用的英国英语,适合澳大利亚的英国人。

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