我正在国际化 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);
我缺少什么简单的东西吗?也许是偏好还是进口?
我以前做过的事:
正如达伦的回答所暗示的那样,我正在寻找的偏好并不在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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)