XCode 5/iOS 7 - локализация не работает в симуляторе
Я следил за одним из уроков Ray Wenderlich по локализации, но я не могу заставить его работать.
Я установил свой проект для локализации на английском и французском языках, и у меня есть файл locasiable.strings для каждого:
![enter image description here]()
Французский файл имеет правильное значение (что касается Google translate) Французские версии моей строки:
![enter image description here]()
Я устанавливаю строки, вызывая правильный ключ из файла localizable.strings:
NSString* strTitle = [NSString stringWithFormat:NSLocalizedString(@"Title", Nil)];
И у меня есть симулятор, установленный на французский (BTW: всякий раз, когда я меняю язык, сбой симулятора).
Но он не вытягивается из правильного файла localizable.strings. Его по-прежнему отображаются на английском языке:
![enter image description here]()
Я что-то делаю неправильно?
Ответы
Ответ 1
Возможно, вы запустили приложение в тот момент, когда файл Localizable.strings
уже существовал, но еще не был локализован. Если это так, этот нелокализованный файл все еще находится в папке ресурсов в наборе приложений в симуляторе (при создании прогона новой версии вашего приложения в симуляторе или на устройстве неиспользуемые файлы не будут удалены). Это может привести к проблемам.
Попробуйте полностью удалить приложение из симулятора и снова запустите прогон.
Ответ 2
Если вы используете xcode 6.1.1 и iOS sdk 8.1, попробуйте это обходное решение.
Кажется, что локализация не работает с симулятором xCode 6.1 и 8.1.
Временное решение:
Перейдите к "схемам редактирования" → "Запуск" (боковая панель) → вкладка "Параметры" → "Язык приложения"
Выберите язык, на котором вы хотите запустить приложение на симуляторе.
Я получил это решение из Обходное решение natanavra
Благодаря ему.
Однако я прочитал на developer forum, что он работает в 6.2 бета-версии Xcode. Надеюсь, он это сделает.
Ответ 3
У меня возникли аналогичные проблемы (локализация IB в моем случае) на устройстве. Таким образом, общий ответ будет
Устройство. Удалите приложение и очистите проект с помощью Shift + CMD + K
Симулятор - Идите iOS simulator > Reset Содержимое и настройки и очистите проект с помощью Shift + CMD + K
Эти проблемы действительно раздражают. Наряду с плохой способностью обновлять локализованные строки является локализация одним из самых больших недостатков разработки iOS.
Ответ 4
Еще одна проблема, которая может вызвать локализацию, не является кодировкой файла строк. Кодировка Localizable.strings должна быть UTF-16. По умолчанию кодировка текстового файла в xcode - UTF-8, что заставляет меня провести целый день, чтобы проверить, почему локализация не работает.
Ответ 5
В Xcode 6.0 и более поздних версиях локализация не работает, не изменяя язык в Simulator.
Вам нужно изменить схему перед запуском приложения.
Перейдите в меню "Редактировать схему" → "Выполнить" - "Параметры", здесь измените язык.
Теперь запустите приложение. Он будет работать.
Подробнее см. в этом ответе: Смена языка на симуляторе iOS 8.1 не работает
Ответ 6
Моя проблема для этого была неправильно закодированным символом в файле локализации.