7

所以在我的应用程序中,我试图获取设备当前设置的语言及其首字母缩写词。所以我这样做:

NSString *fullLanguage = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[[NSLocale preferredLanguages] objectAtIndex:0]];
NSString *abrlanguage = [[NSLocale preferredLanguages] objectAtIndex:0];

然而,一些用户报告说该语言正在返回类似:en_UK 或类似的东西,这反过来又搞乱了我的应用程序的功能。

不管设备的区域设置如何,有没有办法获得设备当前设置的语言?

谢谢!

4

1 回答 1

22

要获取语言代码,请使用:

NSString *languageCode = [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];
NSLog(@"%@", languageCode);  // Prints "en"

要获取语言的全名:

NSString *languageName = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:languageCode];
NSLog(@"%@", languageName);  // Prints "English"

请注意,您使用的是区域代码(它提供了语言的区域变体),并且可以像这样变得更容易:

NSString *regionCode = [[NSLocale currentLocale] objectForKey:NSLocaleIdentifier];
NSLog(@"%@", regionCode);  // Prints "en_US"

地区代码以语言代码开头,然后是下划线,然后是地区变体。(这是根据 Apple 的文档进行标准化的。)

此外,如果您使用currentLocale,请知道它不会随着用户偏好的更改而更新。autoupdatingCurrentLocale如果您想在它们发生变化时保持同步,请改用。

于 2012-12-17T04:49:10.767 回答