因此,在我的应用程序中,我正在尝试获取设备当前设置的语言及其缩写。所以我这样做:
NSString *fullLanguage = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[[NSLocale preferredLanguages] objectAtIndex:0]];
NSString *abrlanguage = [[NSLocale preferredLanguages] objectAtIndex:0];然而,一些用户报告说,该语言返回了类似于: en_UK或类似的内容,这反过来又搞乱了我的应用程序的功能。
无论如何,有没有一种方法可以获得设备的当前设置语言,而不考虑设备的区域设置?
谢谢!
发布于 2012-12-17 12:49:11
要获取语言代码,请使用:
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。
https://stackoverflow.com/questions/13899379
复制相似问题