Вопрос по objective-c, macos – Как получить языковой язык пользователя в Objective-C?

8

Я разрабатываю приложение для Mac OS X. Я хочу изменить содержимое индикации в зависимости от языкового стандарта (английский, испанский и т. Д.) Пользователя приложения. Как получить информацию о том, какой язык используется?

Ваш Ответ

6   ответов
8

но нет необходимости делать то, что вы хотите. OS X имеетподдержка локализации встроен в ОС & # x2014; все, что вам нужно сделать, это предоставить соответствующие языковые файлы, и пользователь может выбрать, какой язык он хочет.

Это не совсем та вещь, где вы можете просто привести пример кода, поскольку пользовательские интерфейсы Mac обычно хранятся в кончиках и, таким образом, на самом деле никакой код не отвечает. По существу, существует структура каталогов, которой должны следовать ресурсы вашего приложения, а остальная операционная система будет обрабатывать все остальное за вас. Прочитайте документы по локализации по ссылке, которую я вам дал, и вы увидите, как это работает. В случаях, когда вы визуализируете текст программно, вы обычно используете функцию NSLocalizedString ().
Спасибо вам большое! Я счастлив, если вы дадите мне несколько примеров кодов freddiefujiwara
2

NSString *language = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"Language: %@", language);

output: Язык: en_US

или это:

NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSLog(@"Language: %@", language);

output: Язык: en

23
NSLog(@"localeIdentifier: %@", [[NSLocale currentLocale] localeIdentifier]);
[[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[[NSLocale currentLocale] localeIdentifier]] может использоваться для получения простой версии на английском языке localeIdentifier
0

то в iOS 9 и более поздних версиях произошли изменения, при которых теперь возвращается [NSLocale предпочитаемый язык], а не только. Так что лучше сделать:

NSString *languageOS = [[NSLocale preferredLanguages] objectAtIndex:0];

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) {
    languageOS = [[languageOS componentsSeparatedByString:@"-"] objectAtIndex:0];
}
3

проверьте документы Apple здесь:Интернационализация - Apple Developer Docs, Не зная больше о вашем конкретном приложении, было бы трудно предложить что-то еще здесь!

6

 NSLocale *locale = [NSLocale currentLocale]; 
 [locale objectForKey:NSLocaleLanguageCode]

Похожие вопросы