如何在objective-c中获取可用的iPhone语言名称的本地化列表?

时间:2011-02-25 17:39:38

标签: iphone localization nslocale

在Objective-C中,我可以轻松获得可用语言环境的列表,如下所示:

NSArray *test = [NSLocale availableLocaleIdentifiers];
NSLog(@"%@", test);
for (int i = 0; i < [test count]; i++) {
    NSLog(@"%@", [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[test objectAtIndex:i]]);
}

这给了我一个这样的列表:

Spanish (United States)
Macedonian (Macedonia)
Oromo (Kenya)
Danish (Denmark)
Korean (South Korea)
Tachelhit (Latin)
Fulah (Senegal)
Indonesian
Serbian (Cyrillic, Montenegro)
Makonde (Tanzania)
Welsh

但是,我想获取语言名称的本地化列表,而不是设置应用程序中的语言名称列表,而不是区域设置名称列表。例如,如果手机在美国本地,我想要“英语”,如果手机是法语,“英语”,如果是德语,“英语”。完成创建这种本地化语言名称列表的最佳方法是什么?

2 个答案:

答案 0 :(得分:10)

NSArray* languages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];

for (int i = 0; i < [languages count]; i++) {

    NSLog(@"%@", [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[languages objectAtIndex:i]]);

}

答案 1 :(得分:0)

您也可以使用此代码:

NSArray *test = [NSLocale availableLocaleIdentifiers];
NSLog(@"%@", test);

for (int i = 0; i < [test count]; i++) {
    NSLog(@"%@", [[NSLocale currentLocale] displayNameForKey:NSLocaleLanguageCode value:[test objectAtIndex:i]]);
}

它显示了更多语言。