Я пытаюсь показать другую строку для мексиканского испанского, чем испанский. Приложение всегда отображает американскую испанскую фразу. FYI - английский, французский и португальский работают нормально - но у них нет указанных мест.iOS localization - не распознает es-US vs es-MX
Я создал папку локализации в разделе «Настройки сборки» -> «Локализации», нажав кнопку «+» и выбрав Испанский (Мексика) (es-MX) и испанский (США) (es-US) из меню «Другое». Затем я обновил соответствующие фразы. В проекте я вижу 5 файлов Localizable.strings, включая (испанский-Мексико) и (испанский-США). Аналогично, я вижу ожидаемые папки в Finder, включая es-MX и es-US.
Я положил некоторые сообщения NSLog в didFinishLaunchingWithOptions применения:
NSLog(@"preferredLocalizations=%@", [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0]);
NSLog(@"localization array=%@, count=%d", [[NSBundle mainBundle] preferredLocalizations], [[[NSBundle mainBundle] preferredLocalizations] count]);
NSLog(@"preferredLanguage = %@", [[NSLocale preferredLanguages] objectAtIndex:0]);
NSLog(@"language array=%@, count=%d", [NSLocale preferredLanguages], [[NSLocale preferredLanguages] count]);
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString *current = [languages objectAtIndex:0];
NSLog(@"user default language=%@", current);
Выход:
2013-07-30 22:21:24.911 ecatalog[33497:907] application:didFinishLaunchingWithOptions
2013-07-30 22:21:24.918 ecatalog[33497:907] preferredLocalizations=es
2013-07-30 22:21:24.920 ecatalog[33497:907] localization array=(
es
), count=1
2013-07-30 22:21:24.922 ecatalog[33497:907] preferredLanguage = es
2013-07-30 22:21:24.924 ecatalog[33497:907] language array=(
es,
en,
fr, <snipped a bunch for brevity>
ms,
"en-GB",
ca,
hu,
vi
), count=34
2013-07-30 22:21:24.926 ecatalog[33497:907] user default language=es
язык массив, кажется, в списке доступных языков по телефону, в моем предпочтительном порядке - т.е. если я установил телефон для французского языка, fr
будет в верхней части списка.
Я не знаю, связано ли это с моим проектом, но мой проект включает в себя две сторонние рамки, поддерживающие испанский, но только вариант es.lproj - не es-MX.lproj или es-US.lproj.
Еще один «симптом» - запуск приложения в симуляторе чередуется между английским и любым языком, на котором я устанавливал симулятор.
Спасибо!