хорошо, я только что столкнулся с проблемой локализации на моем проекте и решил провести эксперимент, чтобы выявить проблему:
эксперимент:
- создать универсальное приложение для iOS;
- изменить текст в основных окнах с «My Universal iPhone (iPad) App» на «Hello» для файлов MainWindow_iPhone.xib и MainWindow_iPad.xib;
- создать и запустить приложение на iPhone и iPadсимуляторы - оба отображают сообщение «Hello» - все в порядке;
- добавить испанскую локализацию для MainWindow_iPhone.xib и для MainWindow_iPad.xib (английская локализация уже была там)
- изменить текст в главных окнахот "Hello" до "Hola" для испанской версии файлов MainWindow_iPhone.xib и MainWindow_iPad.xib;
- изменение языка в симуляторе на испанский;
- создание и запуск приложения в симуляторах iPhone и iPad- оба по-прежнему отображают сообщение «Hello» - что?!?!?!
fix:
- открыть свойства проекта и перейти к «build»вкладка "d фазы";
- в разделе "Копировать ресурсы пакета" добавьте файлы xib: найдите файлы MainWindow_iPhone.xib и MainWindow_iPad.xib в каталоге проекта es.lproj и добавьте их
- создайте и запустите приложениев симуляторах iPhone и iPad - оба отображают сообщение "Hola" - ОК
Хорошо, какой вывод я могу сделать?при добавлении новой локализации в файл xib, xcode забывает добавить этот файл, чтобы скопировать целевой ресурс пакета.поэтому после запуска приложения в другой локализации (например, на испанском) iOS не может найти испанскую локализацию (конечно, Xcode забыл скопировать ее !!!) и загрузить английскую версию xib.
ручное добавление локализованных версийФайлы вносят беспорядок в дерево проекта - добавленные файлы будут отображаться в иерархии проекта, но они уже отображаются, когда мы расширяем файл xib локализацией.(в примере у нас будут MainWindow_iPhone.xib и MainWindow_iPad.xib в дереве структуры проекта, но в то же время они доступны в файловых группах iPhone и iPad после расширения локализованных файлов MainWindow_iPhone.xib или MainWindow_iPad.xib)
или я что-то пропустил?