我正在对 iPhone 应用程序进行国际化 - 我需要根据用户当前的语言环境对某些 View 进行编程更改。我要疯了,因为无论 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);
最佳答案
[NSLocale currentLocale]
基于设备的区域格式设置,而不是语言。如果地区设置为美国,无论您使用哪种语言,您都将获得 en_US。
关于iphone - NSLocale currentLocale 总是返回 "en_US"而不是用户的当前语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1522210/