Локализация iPhone Settings.bundle
По какой-то причине я не могу получить Settings.bundle для распознавания моих дополнительных языков. Я должен упустить что-то очевидное, но я просто не могу понять. Вот что у меня есть:
Структура проекта в XCode:
![XCode Screen Shot]()
Файл Root.plist:
Файл Root.plist http://img227.imageshack.us/img227/571/screenshot20100624at334.png
Файл французского Root.strings
французский файл Root.strings http://img121.imageshack.us/img121/571/screenshot20100624at334.png
Из всего, что я прочитал, я считаю, что структура проекта правильная. СтрокаTable в Root.plist соответствует имени отдельных файлов .strings, а ключ для каждого элемента в Root.plist имеет также соответствие в файлах .strings.
Почему я не вижу французский текст в моих настройках при изменении языка iPhone по умолчанию?
Спасибо заранее!
Ответы
Ответ 1
Я пойду вперед и отвечу на мой собственный вопрос, так как сам решил проблему самостоятельно, тестируя и терпя неудачу. Надеюсь, это поможет кому-то еще в будущем.
Во-первых, я думаю, что мой файл Root.plist
может быть поврежден. Я не совсем уверен, почему, но я полностью удалил Settings.bundle
и повторно создал его, чтобы быть уверенным.
Во-вторых, и, возможно, самое главное, основная проблема заключалась в том, что "ключ" в файле root.strings
не соответствует полю "key
" в Root.plist
, он фактически соответствует "Title
" поле.
Как только я внес изменения в файл root.strings
, все это начало работать.
Ответ 2
Для меня проблема заключалась в том, чтобы покинуть полуточку!
В localizable.strings вы получаете ошибку времени выполнения, если вы опускаете ";", но в Root.strings вы не получаете никаких предупреждений, вы можете запустить его в порядке, но это просто не сработает!
Итак, дважды проверьте, чтобы вы перенумеровали каждую пару: пара значений с точкой с запятой!
Ответ 3
Все, что вам нужно сделать, это сохранить (или Добавить, если это не так) "Строковое имя файла" в Root.plist, после ваших настроек.
![Check the image with example]()
Затем добавьте значение "Root" (или имя вашего файла и переводы), чтобы сделать созданные lang.lproj переводы функциональными.
Ответ 4
В Xcode 5 до сих пор нет очевидного способа локализовать файл Settings.bundle.
Проблема
Xcode не позволяет локализовать файл, который отображается только потому, что он является файлом внутри папки, которая непосредственно отображается в Xcode (отсюда и значки синей папки в дереве).
Решение:
- щелкните правой кнопкой мыши файл Root.strings и выберите "Показать в Finder"
- Элемент списка
- переместите файл Root.strings в одну папку вверх, чтобы папка en.lproj была пуста, и
Cmd-Drag файл Root.strings находится рядом с Root.plist.
- удалить пустой пул en.lproj
- вернитесь к Xcode, обратите внимание, что дерево будет отражать сделанные вами изменения.
- cmd-перетащите файл в дерево за пределами набора параметров, чтобы он появился рядом с исходным кодом.
- появится диалоговое окно с вопросом о том, что делать с файлом.
- НЕ установите флажок, чтобы скопировать файл (вам нужно, чтобы это было ссылкой)
- НЕ выбирайте цель для включения файла строк (параметр settings.bundle уже назначен правильной цели)
- в инспекторе файлов теперь вы можете выбрать локализацию файла и добавить языки к локализации. Файлы будут помещены правильно в settings.bundle, и дерево также автоматически отразит эти изменения.
Ответ 5
После нескольких повторных попыток активировать локализацию, следующие шаги работали для меня:
- Закрыть xcode
- Перетащите и скопируйте набор параметров на рабочий стол (или где угодно)
- Содержимое открытого пакета
- Перетащите Root.strings в
папка en.lproj
-
Дублируйте папку en.lproj и переименуйте
любой язык, который вы хотите (с использованием 2-буквенного кода, т.е. fr.lproj)
-
Замените исходный набор настроек новым ( без
открытие xcode).
- Теперь Открыть xcode, а новые файлы и папки
должен быть там
Теперь удалите старое приложение и запустите xcode, отлично работайте в симуляторе и на устройстве.
ПРИМЕЧАНИЕ: Закрытие xcode, обновление дублированного набора параметров вне xcode и замена обновленного назад помогут.
Ответ 6
В моем случае оказалось, что "Strings Filename"
был установлен в "Root"
в Просмотр списка свойств Root.plist
, но при просмотре файла в Просмотр исходного кода, на самом деле это было "StringsTable"
, указывающее на "Root"
. Решение состоит в том, чтобы добавить еще одну запись, где "Strings Filename"
указывает на "Root"
. (Я также попытался удалить предыдущую запись, но затем она перестает работать, поэтому вам нужны оба.)