Я локализую свое приложение iOS, и в Симуляторе он работает правильно на моем выбранном языке каждый раз.
При тестировании на моем iPhone 5 он только правильно определяет язык при первом запуске приложения. Каждый раз, когда я перекомпилирую и запускаю свое приложение на устройстве, он обнаруживает "en" в качестве языка, хотя я тестирую с выбранным вами "Español".
Я определяю язык, используя:
[[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0]
Я также использовал:
[[NSLocale preferredLanguages] objectAtIndex:0]
Тот же результат.
Если я убил приложение после первого запуска и перезапустил его на устройстве, он продолжает правильно распознавать язык.
Но если я убью приложение, а затем перекомпилирую/перезапустим через Xcode после первого запуска, он будет загружаться с помощью "en" (англ.), обнаруженного вместо этого.
После этого убийство и повторное начало приложения постоянно обнаруживаются как английский, если я полностью не удалю приложение и не перекомпилирую/не переустановить/запустить приложение с помощью Xcode. Затем цикл повторяется... последующая перестройка/перезапуск без предварительного удаления приложения из устройства приводит к неправильному определению.
Все остальные приложения на моем устройстве отображаются на испанском языке все время. Весь пользовательский интерфейс отображается на испанском языке.
ОБНОВЛЕНИЕ: Я тестировал на своем iPad (3rd gen), также работающем на iOS 6, и испытываю то же поведение.
ОБНОВЛЕНИЕ 2:
В didFinishLaunchingWithOptions у меня есть этот код для обнаружения языка: (язык - это NSString *):
language = [[NSLocale preferredLanguages] objectAtIndex:0];
В соответствии с этим оператором отладки, чтобы сравнить полученное мной значение, а также немного другой способ его обнаружения, просто для отладки:
NSLog(@"Detected language: %@ / %@", language, [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0]);
Результат отображается как "Обнаруженный язык: es/es", когда приложение работает правильно в испанском режиме, а затем отображается как "Обнаруженный язык: en/en", когда он этого не делает. По-прежнему не знаю, почему он решает загрузить как английский иногда...
ОБНОВЛЕНИЕ 4: Я ценю все ответы, и я пробовал различные предложения. К сожалению, я не смог наградить +100 баунти, поскольку ни одна из предложений, похоже, не решила проблему. Если кто-то окончательно найдет решение, которое будет работать для меня, я в это время награжу еще +50 баунти.
ОБНОВЛЕНИЕ 5: Я обновил с Xcode 4.5 до 4.5.2 и столкнулся с этой же проблемой.
ОБНОВЛЕНИЕ 6: Я создал новый тестовый проект с нуля, и он отлично работает! Очевидно, что-то должно быть неправильно в том, как мой проект выложен или, возможно, в одном из файлов данных. Я предполагаю, что следующее путешествие будет состоять в том, чтобы воссоздать проект с нуля, скопировав данные файла по одному...
ОБНОВЛЕНИЕ 7 (МЕСЯЦЫ ПОЗЖЕ): К сожалению, я снова столкнулся с этой проблемой после временного ее разрешения (по-видимому) путем тщательного воссоздания моего проекта. При первой загрузке язык правильно отображается, но при последующих нагрузках он возвращается на английский.
SOLVED Посмотрите мое окончательное решение ниже. Спасибо всем за помощь. Я могу получить часть щедрости, так как она все равно пропадет.