2014-10-27 2 views

ответ

3

"немецкий" не является полной локализации. Это всего лишь язык. OS X позволяет пользователю заказывать свои языковые предпочтения, поэтому вполне возможно, что ваше приложение отображается на немецком языке, но предпочтительный язык пользователя - арабский (возможно, потому, что они запросили арабский, затем немецкий, затем английский, и вы не локализуете на арабский).

Итак, что вы можете знать, это [NSLocale preferredLanguages]. Вы можете выполнить поиск и решить, как себя вести. Но почти во всех случаях лучшим ответом является просто добавить дополнительный идентификатор в свой пакет локализации и посмотреть, что вы вернетесь. Например, если в вашем немецком Localizeable.strings файле у вас есть:

MY_LOCALE = "German"; 

вы можете использовать:

NSString *identifier = [[NSBundle mainBundle] localizedStringForKey:@"MY_LOCALE" value:nil table:nil]; 
if ([identifier isEqualToString:@"German"]) { ... } 

Тем не менее, это невероятно редкое, что вы должны сделать это. Apple предоставляет rich localization and internationalization system, чтобы избежать этого. Если у вас нет очень специализированной и необычной проблемы, поиск языка - это, вероятно, неправильная вещь.

И, как я уже сказал, «немецкий» не является локализацией. Это язык, и есть много других «локальных» вещей за пределами языка (например, форматирование даты, форматирование чисел и т. Д.). Если вам нужна вся локализация, вы хотите использовать [[NSLocale currentLocale] localeIdentifier]. Затем вы можете использовать +componentsFromLocaleIdentifier:, чтобы разорвать его на части и разобраться с различными частями, если это абсолютно необходимо.

Смежные вопросы