Как определить локализацию?Определить локализацию (xCode 6 MAC Cocoa)
Я хочу что-то вроде:
если локализация является немецкий ...
еще ...
Как определить локализацию?Определить локализацию (xCode 6 MAC Cocoa)
Я хочу что-то вроде:
если локализация является немецкий ...
еще ...
"немецкий" не является полной локализации. Это всего лишь язык. 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:
, чтобы разорвать его на части и разобраться с различными частями, если это абсолютно необходимо.