Чтобы получить список предпочитаемых языков пользователя, используйте [NSLocale preferredLanguages]
. Это возвращает массив строк кода языка. Чтобы преобразовать эти языковые коды в отображаемое имя, необходимо использовать метод экземпляра NSLocale displayNameForKey:value:
с ключом NSLocalIdentifier
.
Для отображения имени языка в вашей текущей локали, вызовите этот метод на [NSLocale currentLocale]
- в моем случае «de» становится «German». Если вам нужно имя на самом языке, сначала создайте экземпляр 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]);
}
И вывод на мой 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