Как локализовать Settings.bundle в xcode4? - PullRequest
11 голосов
/ 22 марта 2011

Я работаю над xcode4 и создал Settings.bundle для своего проекта.Я могу отредактировать файл Root.plist в xcode4, но редактировать файл Root.strings невозможно.Он даже не отображается в редакторе.

enter image description here

Я не могу развернуть папку en.lproj, как вы видите на картинке.

Но когда ясделайте щелчок правой кнопкой мыши, откройте во внешнем редакторе это даст мне:

enter image description here

Двойной щелчок на Root.strings дает мне:

enter image description here

Я пробовал это несколько раз, создав новый проект приложения на основе окон и создав новый Settings.bundle.Я всегда не могу это локализовать.Есть идеи?

Ответы [ 6 ]

21 голосов
/ 22 ноября 2011

В XCode 4.2 вы должны выполнить следующие шаги (просто модификация Xcode 3.2.2 и локализация Settings.bundle )

  1. Показать ваш Settings.bundle в Finder.
  2. Щелкните правой кнопкой мыши (или щелкните, удерживая клавишу Ctrl) на нем, и выберите «Показать содержимое пакета».
  3. Создайте новую папку с именем нужного языка (например, fr.lproj).
  4. Скопируйте файл Root.strings из папки en.lproj и вставьте в папку fr.lproj.
13 голосов
/ 27 марта 2011

EDIT: Apple исправила, еще раз, неправильную ошибку.Их изменение сделало мой обходной путь бесполезным.Это просто больше не работает, вы не можете добавлять файлы в файл Settings.bundle.

Пожалуйста, обратитесь к ответу Джави о методе, который, кажется, работает.


Я надеюсь, вам нравятся уродливые обходные пути.

  1. Правой кнопкой мыши щелкните пакет настроек на боковой панели.
  2. Выберите New File
  3. Pick Resource / Strings file
  4. Назовите его Root.strings, убедитесь, что он находится внутри settings.bundle
  5. Вбоковой панели файл будет виден дважды.В разделе "root" и в файле Settings.bundle.Но оба указывают на одни и те же файлы.
  6. Выберите файл Root.strings в корневом разделе.(AFAIR вы должны преобразовать его в UTF16)
  7. Добавить локализацию, xcode спросит вас, хотите ли вы заменить файл.Да, вы хотите это.
  8. Добавьте столько локализаций, сколько хотите.Вы должны иметь возможность редактировать файл в корневом разделе боковой панели.

Я надеюсь, что это работает для вас, для меня это работает.

И если вы этого не сделали, сообщите об ошибке на bugreport.apple.com


Я установлю новый выпуск сейчас, давайте посмотримесли это исправлено.Редактировать: не исправлено.


РЕДАКТИРОВАТЬ: Я не знаю, правильно ли я понял ваш второй вопрос.Но когда вы добавляете локализацию в файл, который появляется за пределами пакета, он добавляет папку локализации в settings.bundle

enter image description here

После добавления испанской локализации в Root.strings:

enter image description here

Фактический файл находится в папке foo.lproj, он просто не отображается на боковой панели xcode.Если вы проверите расположение в файловой системе, вы увидите, что они находятся внутри пакета настроек.enter image description here

Вчера я проверил файл на английском и немецком языках, и он работал правильно в симуляторе.Я думаю, это просто неправильный макет боковой панели.Базовые местоположения и обработка файлов кажутся правильными.

7 голосов
/ 27 марта 2011

Для меня это помогло изменить тип файла (в Инспекторе файлов) папки «en.lproj» с «Default / Directory» на «Directory». Магия.

2 голосов
/ 19 ноября 2011

Я только что отказался от попыток что-то сделать с Root.strings. Вместо этого я просто скопировал plist в каждый * .lproj, и это сработало!

Что касается перевода на английский и мой родной язык, нет проблем.

Итак, у меня есть:

Settings.bundle
|- en.lproj
|  |- Root.plist
|  `- Root.strings -- nothing useful there
|
`- zz.proj
   `- Root.plist

Хорошая новость в том, что Root.plist - это utf8.

2 голосов
/ 17 июня 2011

Xcode 4 создает «Root.strings» в виде списка двоичных свойств. поэтому мне нужно было установить тип файла «Список свойств (двоичный)», чтобы он отображался правильно.

0 голосов
/ 16 мая 2013

Если у вас уже есть файл Root.strings, который представляет собой «Список свойств (двоичный файл)», и вы хотите преобразовать его в соответствующий текстовый файл строк, вы можете использовать plutil в приложении Terminal для его преобразования.Например, в формате JSON:

> plutil -convert json /path/to/Settings.bundle/en.lproj/Root.strings

NB. Вы можете запустить plutil -h для получения справки по использованию.

Однако затем вам потребуется преобразовать формат JSON:

{"key1":"value1","key2":"value2"}

к файлу строкового файла:

"key1" = "value1";
"key2" = "value2";

Это легко сделать с помощью нескольких операций поиска / замены в текстовом редакторе.

...