【问题标题】:How to get localized list of available iPhone language names in objective-c?如何在objective-c中获取可用iPhone语言名称的本地化列表?
【发布时间】:2012-09-06 18:08:39
【问题描述】:

在 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

但是,我想获取语言名称的本地化列表,而不是区域设置名称列表,就像在“设置”应用中一样。例如,如果电话在美国地区,我想得到“English”,如果电话是法语,“Anglais”,如果是德语,“Englisch”。完成创建这样一个本地化语言名称列表的最佳方法是什么?

【问题讨论】:

    标签: iphone localization nslocale


    【解决方案1】:
    NSArray* languages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
    
    for (int i = 0; i < [languages count]; i++) {
    
        NSLog(@"%@", [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[languages objectAtIndex:i]]);
    
    }
    

    【讨论】:

    • 非常好...请注意,它会以当前语言返回已翻译的项目,因此请注意,您可能会得到“italian”或“italiano”,具体取决于系统中设置的语言偏好...
    • 谢谢!这正是我想要的。
    【解决方案2】:

    您也可以使用此代码:

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

    它显示了更多的语言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多