Ios 错误的本地化

Ios 错误的本地化,ios,localization,Ios,Localization,我有一个用多种语言本地化的iOS应用程序。我有英语、荷兰语和荷兰语(比利时)的本地化.strings文件。问题是,如果将荷兰语设置为设备语言,比利时设置为国家,则使用荷兰语字符串,而不是荷兰语-比利时字符串 我添加了一些日志记录,以确保在设备上设置了正确的语言,并且看起来是正确的: NSLocale *locale = [NSLocale currentLocale]; NSString *language = [locale displayNameForKey:NSLocaleIden

我有一个用多种语言本地化的iOS应用程序。我有英语、荷兰语和荷兰语(比利时)的本地化.strings文件。问题是,如果将荷兰语设置为设备语言,比利时设置为国家,则使用荷兰语字符串,而不是荷兰语-比利时字符串

我添加了一些日志记录,以确保在设备上设置了正确的语言,并且看起来是正确的:

NSLocale *locale = [NSLocale currentLocale];    
NSString *language = [locale displayNameForKey:NSLocaleIdentifier
                                             value:[locale localeIdentifier]];
NSLog(@"language %@", language);
这是打印出来的

2015-04-09 11:49:26.227 MyTestApp[222:7459] language Nederlands (België)
但是如果我尝试使用NSLocalizedString获取字符串,我会得到荷兰资源,而不是荷兰比利时资源


我已经在运行8.1的iPhone5s和几个7.1/8.1模拟器上进行了测试,但我无法让它工作。有趣的是,如果我在XCode中的editscheme->applicationlanguage下强制将语言设置为Dutch(比利时),那么就会使用正确的语言

问题在于Xcode为每种语言创建了资源文件夹,并用连字符分隔语言和区域,例如nl-BE.proj。但是,区域设置代码使用下划线,例如nl_BE,因此区域永远不会匹配。这似乎是一个XCode错误

解决方案是更改区域设置,使其包含此处讨论的连字符