所提供的解决方案实际上将返回设备的当前区域,而不是当前选择的语言。这些通常是一样的。然而,如果我在北美,我把我的语言设置为日语,我的地区仍将是英语(美国)。为了检索当前选择的语言,您可以:
NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];
这将返回当前所选语言的双字母代码。 “en”表示英语,“es”表示西班牙语,“de”表示德语,等等。更多例子请参见这个维基百科词条(特别是639-1)
然后这是一个简单的事情,将两个字母的代码转换为你想显示的字符串。所以如果是“en”,显示“英语”。
希望这有助于有人正在寻找区分区域和当前选择的语言。
编辑
值得引用NSLocale.h中的头信息:
+ (NSArray *)preferredLanguages NS_AVAILABLE(10_5, 2_0); // note that this list does not indicate what language the app is actually running in; the [NSBundle mainBundle] object determines that at launch and knows that information