Проблема локализации нескольких раскадровок IOs7

Я использую несколько раскадровок, и я только что решил их локализовать (файлы .strings были сгенерированы Xcode).

Я заметил, что в разделе «Фазы сборки» > «Копировать ресурсы пакета» все ресурсы, связанные с локализацией, отображаются красным цветом.

Снимок экрана Xcode

Во время выполнения локализация работает только на основной раскадровке. Локализация с помощью Localizable.strings тоже работает. Но этого нет в других раскадровках.

Я попытался перезапустить Xcode, но это ничего не изменило. (cf Базовая интернационализация и множественная раскадровка работают неправильно)

Мои локализованные раскадровки были предварительно скомпилированы. Если я добавлю еще одну раскадровку, локализую ее и запущу компиляцию, произойдет сбой с этой ошибкой:

*** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Не удалось найти раскадровку с именем «Обслуживание» в пакете NSBundle (...)

У вас есть идея решить эту проблему?


person Sylva1n    schedule 28.09.2013    source источник


Ответы (3)


Эта ошибка, вероятно, связана с тем, что вы не реализовали один из языков, выбранных для локализации, в настройках приложения.

Чтобы реализовать язык в раскадровке:

  1. Выберите раскадровку
  2. На правой панели перейдите на вкладку «Инспектор файлов» (первая слева).
  3. В разделе Локализация отметьте все языки.

Теперь у вас есть два способа локализовать раскадровку:

  • Либо вы решите создать файл .strings для своего языка, выбрав Локализируемые строки, это создаст список строк, найденных xcode в вашей раскадровке.
  • Или вы можете создать «дочернюю» раскадровку, выбрав Interface Builder Cocoa Touch Storyboard, которая создает другую версию вашей раскадровки для определенного языка.

До сих пор я нашел только один способ обновить файл .strings в xcode, если вы добавляете новые строки: просто снимите и перепроверьте язык и выберите «Заменить файл» при появлении запроса. Apple также предоставляет инструмент, который можно использовать в терминале. Наконец, есть скрипт, который делает это автоматически.

person Alexandre G.    schedule 07.10.2013

  • Откройте файл раскадровки
  • См. правую панель, на первой вкладке (идентификация) в разделе локализации снимите флажок "Основа"
  • Вам должно быть предложено диалоговое окно, независимо от ответа проблема должна быть исправлена.

Теперь вы видите, что этапы сборки указаны правильно, и вы сможете запустить свой проект.

person jdtogni    schedule 03.10.2013

Одной из причин красных Localizable.strings или других файлов локализации, которые не могут быть скопированы в «Ресурсы пакета копирования», может быть настройка для «Собственной области разработки локализации» в настройках цели.

Этот регион должен быть добавлен в «Локализации» вашего проекта.

т.е. если «Родной регион разработки локализации» имеет значение «en», то «Английский» следует добавить в качестве локализации в настройках вашего проекта.

person Kaskraker    schedule 12.01.2014