我想显示设备UI使用的当前语言。 我将使用什么代码?
我希望它作为NSString
以完全拼写的格式显示。 (不是@“ en_US”)
编辑:对于那些继续前进的人,这里有大量有用的评论,因为答案随着新的iOS版本的发展而发展。
#1楼
对于MonoTouch C#开发人员,请使用:
NSLocale.PreferredLanguages.FirstOrDefault() ?? "en"
注意:我知道这是一个iOS问题,但是由于我是MonoTouch开发人员,因此此页面上的答案将我引向了正确的方向,我认为我会分享结果。
#2楼
所选答案返回当前设备语言,但不返回应用程序中使用的实际语言。 如果您未在应用中提供用户首选语言的本地化版本,则使用按用户首选顺序排序的第一个可用本地化版本。
要发现您的本地化语言中选择的当前语言,请使用
[[NSBundle mainBundle] preferredLocalizations];
例:
NSString *language = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];
迅速:
let language = NSBundle.mainBundle().preferredLocalizations.first as NSString
#3楼
我用这个
NSArray *arr = [NSLocale preferredLanguages];
for (NSString *lan in arr) {
NSLog(@"%@: %@ %@",lan, [NSLocale canonicalLanguageIdentifierFromString:lan], [[[NSLocale alloc] initWithLocaleIdentifier:lan] displayNameForKey:NSLocaleIdentifier value:lan]);
}
忽略内存泄漏。
结果是
2013-03-02 20:01:57.457 xx[12334:907] zh-Hans: zh-Hans 中文(简体中文)
2013-03-02 20:01:57.460 xx[12334:907] en: en English
2013-03-02 20:01:57.462 xx[12334:907] ja: ja 日本語
2013-03-02 20:01:57.465 xx[12334:907] fr: fr français
2013-03-02 20:01:57.468 xx[12334:907] de: de Deutsch
2013-03-02 20:01:57.472 xx[12334:907] nl: nl Nederlands
2013-03-02 20:01:57.477 xx[12334:907] it: it italiano
2013-03-02 20:01:57.481 xx[12334:907] es: es español
#4楼
根据Apple 文档
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:0];
#5楼
为了获得用户设备当前的语言,请使用以下代码对我有用。
NSString * myString = [[NSLocale preferredlanguage]objectAtIndex:0];
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3162529