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 симулятор не работает
Моей проблемой для этого был неправильно закодированный символ в файле локализации.