我想显示设备UI正在使用的当前语言.我会用什么代码?
我希望这是一个NSString完全拼写的格式.(不是@"en_US")
编辑:对于那些开车的人来说,这里有很多有用的评论,因为答案随着新的iOS版本的发展而演变.
模拟器的语言已经改为日语,为什么[[NSLocale preferredLanguages] objectAtIndex:0] 总是返回"en"?
首选语言和地区都与"en"无关,它"en"来自哪里?

试图获得[[NSLocale preferredLanguages] objectAtIndex:2],然后崩溃显示*** Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFArray objectAtIndex:]: index (2) beyond bounds (1)
这是否意味着模拟器中没有设置任何语言?太奇怪了!
在使用iOS8.1/7.1升级到Xcode 6.1之前,这种情况从未发生过.
同时,在我的iPhone 5上试过同样的东西,控制台输出正确的东西.
为什么这么奇怪?有没有人有这样的问题?
哦! 怎么了....
"en"再次,日语和英语没有发现!"en"找到一个?日语和英语在哪里?
- (NSString *)countryNameByCode:(NSString*)countryCode
{
NSString *identifier = [NSLocale localeIdentifierFromComponents:@{NSLocaleCountryCode: countryCode}];
NSString *countryName = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:identifier];
return countryName;
}
这回来了nil.为什么?
在我的界面中,我显示了一个语言环境的显示名称:
[[NSLocale currentLocale] displayNameForKey: NSLocaleIdentifier value: identifier]
Run Code Online (Sandbox Code Playgroud)
但是这会使用系统的区域设置来显示显示名称,该区域设置并不总是与应用程序的区域设置相同.例如,如果我用法语设置我的系统并且我的应用程序没有法语本地化,它将在英语界面中提供法语显示名称.相反,我想在英文界面中有一个英文显示名称,所以我不混合语言.