我从以下代码获取用户首选语言:
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString *language = [languages objectAtIndex:0];Run Code Online (Sandbox Code Playgroud)
这将返回类似'en'代表'English'或'de'代表'Deutsch'.有什么方法可以自动获得完整的语言名称,即英语而不是en?
谢谢!
Mihai Fonoage
sic*_*ckp 36
要获取用户的首选语言列表,请使用[NSLocale preferredLanguages].这将返回一个语言代码字符串数组.要将这些语言代码转换为显示名称,您需要使用displayNameForKey:value:带有密钥的NSLocale 实例方法NSLocalIdentifier.
对于当前语言环境中语言的显示名称,请调用该方法[NSLocale currentLocale]- 在我的情况下,"de"变为"德语".如果您想要语言本身的名称,首先NSLocale要为该语言创建一个实例,然后将该对象用作接收者.例如,"de"在德语中变成"Deutsch".
这段代码应该说清楚:
NSArray *languages = [NSLocale preferredLanguages];
for (NSString *language in languages) {
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:language];
NSLog(@"language code = %@, display name = %@, in language = %@",
language,
[[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:language],
[locale displayNameForKey:NSLocaleIdentifier value:language]);
}
Run Code Online (Sandbox Code Playgroud)
我iPhone上的输出:
language code = en, display name = English, in language = English
language code = zh-Hans, display name = Chinese (Simplified Han), in language = ?? (????)
language code = ja, display name = Japanese, in language = ???
language code = pt, display name = Portuguese, in language = português
language code = de, display name = German, in language = Deutsch
language code = fr, display name = French, in language = français
language code = nl, display name = Dutch, in language = Nederlands
language code = it, display name = Italian, in language = italiano
language code = es, display name = Spanish, in language = español
language code = pt-PT, display name = Portuguese (Portugal), in language = português (Portugal)
language code = da, display name = Danish, in language = dansk
language code = fi, display name = Finnish, in language = suomi
language code = nb, display name = Norwegian Bokmål, in language = norsk bokmål
language code = sv, display name = Swedish, in language = svenska
language code = ko, display name = Korean, in language = ???
language code = zh-Hant, display name = Chinese (Traditional Han), in language = ?? (????)
language code = ru, display name = Russian, in language = ???????
language code = pl, display name = Polish, in language = polski
language code = tr, display name = Turkish, in language = Türkçe
language code = uk, display name = Ukrainian, in language = ??????????
language code = ar, display name = Arabic, in language = ???????
language code = hr, display name = Croatian, in language = hrvatski
language code = cs, display name = Czech, in language = ?eština
language code = el, display name = Greek, in language = ????????
language code = he, display name = Hebrew, in language = ?????
language code = ro, display name = Romanian, in language = român?
language code = sk, display name = Slovak, in language = slovenský
language code = th, display name = Thai, in language = ???
language code = id, display name = Indonesian, in language = Bahasa Indonesia
Run Code Online (Sandbox Code Playgroud)
NSArray *languages = [[NSBundle mainBundle] localizations];
NSString *language = [languages objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13131 次 |
| 最近记录: |