Как локализовать 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";
Это легко сделать с помощью нескольких операций поиска/замены в текстовом редакторе.