Как локализовать Settings.bundle в xcode4?

Я работаю над 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. Я не могу его локализовать. Любые идеи?

Ответ 1

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

Обратитесь к ответу Javi за метод, который, кажется, работает.


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

  • Щелкните правой кнопкой мыши по набору параметров в боковой панели.
  • Выберите New File
  • Выберите файл ресурсов/строк
  • Назовите его Root.strings, убедитесь, что он находится внутри settings.bundle
  • В боковой панели файл будет виден дважды. В разделе "root" и в Settings.bundle. Но оба указывают на одни и те же файлы.
  • Выберите файл Root.strings в корневом разделе. (AFAIR вы должны преобразовать его в UTF16)
  • Добавьте локализацию, xcode спросит вас, хотите ли вы заменить файл. Да, вы этого хотите.
  • Добавьте столько локализаций, сколько хотите. Вы должны иметь возможность редактировать файл в корневом разделе боковой панели.

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

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


Теперь я установлю новую версию, давайте посмотрим, исправлено ли это. Изменить: Не исправлено.


EDIT: Я не знаю. Если бы я правильно понял ваш второй вопрос. Но когда вы добавляете локализацию в файл, который появляется за пределами пакета, он добавляет папку локализации в settings.bundle

enter image description here

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

enter image description here

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

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

Ответ 2

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

  • Покажите свой файл Settings.bundle в Finder.
  • Щелкните правой кнопкой мыши (или нажмите Ctrl-клик) на нем и выберите "Показать содержимое пакета".
  • Создайте новую папку, названную как нужный язык (например, fr.lproj).
  • Скопируйте файл Root.strings из папки en.lproj и вставьте в папку fr.lproj.

Ответ 3

Для меня это сработало, чтобы изменить тип файла (в инспекторе файлов) папки "en.lproj" из "Default/Directory" в "Directory". Магия.

Ответ 4

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

Ответ 5

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

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

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

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

Хорошей новостью является то, что Root.plist является utf8.

Ответ 6

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

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

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

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

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

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

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

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