Как получить локализованный список доступных названий языков iPhone в target-c? - PullRequest
3 голосов
/ 25 февраля 2011

В 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

Однако вместо списка имен локалей я хотел бы получить локализованный список названий языков, как в приложении «Настройки».Например, если телефон находится в США, я хочу получить «английский», если телефон на французском «Anglais», а на немецком «Englisch».Каков наилучший способ создания такого локализованного списка имен языков?

Ответы [ 2 ]

10 голосов
/ 25 февраля 2011
NSArray* languages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];

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

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

}
0 голосов
/ 06 сентября 2012

Вы также можете использовать этот код:

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

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

Показывает больше языков.

...