XCode 5/iOS 7 - в симуляторе не работает локализация

Я следовал одному из руководств Рэя Вендерлиха по локализации, но я не могу заставить его работать.

Я настроил свой проект для локализации на английском и французском языках, и у меня есть файл locaziable.strings для каждого:

Французский файл имеет правильные (а также Google переводчик) французские версии моей строки:

Я устанавливаю строки, вызывая правильный ключ из файла localizable.strings:

 NSString* strTitle = [NSString stringWithFormat:NSLocalizedString(@"Title", Nil)];

И у меня установлен симулятор на французский (кстати: всякий раз, когда я меняю язык, симулятор вылетает).

Но это не извлечение из правильного файла localizable.strings. Его по-прежнему отображается на английском языке:

Я делаю что-то неправильно?

6 ответов

Решение

Может быть, вы запустили приложение в какое-то время, когда файл Localizable.strings уже существовал, но еще не был локализован. В этом случае этот нелокализованный файл все еще находится в папке ресурсов в комплекте приложений в симуляторе (при создании новой версии приложения в симуляторе или на устройстве неиспользуемые файлы не будут удалены). Это может привести к проблемам.

Попробуйте полностью удалить приложение из симулятора и снова запустить прогон.

Если вы используете xcode 6.1.1 и iOS sdk 8.1, попробуйте этот обходной путь.

Кажется, локализация не работает с симулятором xCode 6.1 и 8.1. Обходной путь: Перейдите к пункту "Редактировать схемы" >> "Выполнить" (боковая панель) >> вкладка "Параметры" >> "Язык приложения" Выберите язык, на котором вы хотите запустить приложение на симуляторе. Я получил этот обходной путь от natanavra пути от natanavra Благодаря ему.

Однако я читал на форуме разработчиков, что он работает в 6.2 бета-версии XCode. Надеюсь, что это сделать.

Я сталкивался с подобными проблемами (локализация IB в моем случае) на устройстве. Таким образом, общий ответ будет

Устройство - удалить приложение и очистить проект от Shift+CMD+K

Симулятор - Go iOS simulator > Сброс контента и настроек и чистый проект по Shift+CMD+K

Эти проблемы действительно раздражают. Наряду с плохой способностью обновлять локализованные строки локализация является одним из самых больших недостатков разработки под iOS.

Другая проблема, которая может привести к неработающей локализации, - это кодирование файла строк. Кодировка Localizable.strings должна быть UTF-16. Кодировка по умолчанию для текстового файла в xcode - UTF-8, поэтому я трачу целый день на проверку того, почему локализация не работает.

В Xcode 6.0 и позже, Локализация не работает, изменяя язык в Симуляторе, не работающем.

Вы должны отредактировать схему перед запуском вашего приложения.

Зайдите в Edit Scheme -> Run -> Options, смените язык здесь.

Теперь запустите ваше приложение. Это будет работать.

Для более подробной информации, проверьте этот ответ: Смена языка на iOS 8.1 симулятор не работает

Моей проблемой для этого был неправильно закодированный символ в файле локализации.

Другие вопросы по тегам