我正在将iPhone应用程序国际化-我需要根据用户当前的语言环境对某些视图进行编程更改。我疯了,因为无论iPhone模拟器或实际硬件上的语言偏好是什么,locale
总是评估为“ en_US”:
NSString *locale = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
疯狂的是,该应用程序的其余部分表现正常。从Localization.strings文件中选择了正确的字符串并在界面中使用了该语言,并且使用了针对所选语言环境的正确的.xib文件。
我也尝试了以下方法,但均无济于事:
NSString *locale = [[NSLocale autoupdatingCurrentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
有什么简单的我想念的吗?偏好还是进口?
我曾经做过的事:
正如Darren的答案所暗示的那样,我要查找的首选项不在中NSLocale
,而是在这里:
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"];
NSString* preferredLanguage = [languages objectAtIndex:0];
NSLog(@"preferredLanguage: %@", preferredLang);
彼得的答案似乎是一个更好的解决方案:
NSArray* preferredLanguages = [NSLocale preferredLanguages];
NSLog(@"preferredLanguages: %@", preferredLanguages);