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

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

введите описание изображения здесь

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

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

введите описание изображения здесь

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

введите описание изображения здесь

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


person Upvote    schedule 22.03.2011    source источник


Ответы (6)


РЕДАКТИРОВАТЬ: Apple снова исправила неправильную ошибку. Их изменение сделало мой обходной путь бесполезным. Просто он больше не работает, вы не можете добавлять файлы в Settings.bundle.

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


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

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

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

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


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


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

введите описание изображения здесь

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

введите описание изображения здесь

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

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

person Matthias Bauch    schedule 26.03.2011
comment
Спасибо, отлично работает :) Исправлено ли это в новой версии? Я думаю, что в этом openradar.me/9127927 уже есть отчет об ошибке. - person Upvote; 27.03.2011
comment
Оу, забыл что-то спросить, что там с локализацией ?? Root.strings отсутствует в en.lproj или de.lproj, откуда он знает, что это немецкий или английский язык? - person Upvote; 27.03.2011
comment
@ArtWork Я отредактировал, но после повторного прочтения вашего второго вопроса понял, что вы можете просто спросить, где находится файл в файловой системе. Он находится в папке de.lproj внутри файла settings.bundle. Щелкните правой кнопкой мыши файл settings.bundle в поисковике и выберите Show Package Contents. - person Matthias Bauch; 27.03.2011
comment
Как получить раскрывающийся список Root.strings? Я могу просто создать Root.strings без стрелки, чтобы показать дочерние элементы, однако как мне создать дочерние элементы? Для меня он добавляет только Root.strings, и я не могу создать еще один, потому что он просто заменяет старый - person Upvote; 27.03.2011
comment
Вы добавили локализацию? На боковой панели "Утилиты". - person Matthias Bauch; 27.03.2011
comment
de.lproj не отображается на боковой панели, но я могу просмотреть его в поисковике, странная вещь, Apple определенно должна это исправить. Спасибо за вашу помощь! - person Upvote; 27.03.2011
comment
Проверьте, действительно ли физическое расположение файлов находится в пакете настроек. Я сомневаюсь, что это сработает, если вы не увидите папку. - person Matthias Bauch; 27.03.2011
comment
@Downvoter Что не так с этим методом? Я понимаю, что мой обходной путь сложнее, чем небольшое изменение от dalind. Но пробовали ли вы добавить дюжину локализаций с его подходом? Я сомневаюсь. - person Matthias Bauch; 18.04.2011
comment
Я не понимаю. Когда я нажимаю на Settings.bundle и выбираю New File, Xcode не позволяет мне разместить файл Strings внутри Settings.bundle. Как мне поместить файл Root.strings в Settings.bundle из Xcode? Это ужасный баг! Это сводит меня с ума :( - person Julian; 24.07.2011
comment
Та же ситуация, что и у Джулиана (. Root.strings не добавляется в Settings.bundle - person Tamara; 06.12.2011
comment
Для меня то же самое, что и для Джулиана ...; ( - person Daniel Albuschat; 27.06.2012
comment
Прошу прощения за то, что не ответил, и за решение, которое больше не работает. По-видимому, Apple исправила ошибку, которая включила мой обходной путь (вы могли создать новый файл в Settings.bundle). Нет необходимости упоминать, что они не исправили ошибку, из-за которой необходимо было обходное решение. Пожалуйста, посмотрите ответ Хави, я не пробовал, но похоже, что это может сработать. - person Matthias Bauch; 28.06.2012

В 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.
person Javi    schedule 22.11.2011

Для меня это сработало, чтобы изменить Тип файла (в Инспекторе файлов) папки «en.lproj» с «По умолчанию / Каталог» на «Каталог». Магия.

person dalind    schedule 27.03.2011
comment
Я вижу то же самое. Хотя Xcode4 сказал, что тип файла был Directory - автоматический (или что-то в этом роде), ручная установка его на Directory заставила наконец-то появиться файл Root.strings. - person DarkDust; 02.05.2011
comment
... но по какой-то причине изменение не было постоянным. Вместо этого пошел с решением fluchtpunkt, похоже, работает нормально. - person DarkDust; 02.05.2011

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

person Urkle    schedule 17.06.2011
comment
Я пробовал это - пока он работал, чтобы показать строки по умолчанию (после изменения dalinds, чтобы позволить каталогу вести себя), редактирование значений по умолчанию на самом деле не изменило строки на экране настроек. - person lilbyrdie; 19.06.2011

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

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

Так что я:

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

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

person 18446744073709551615    schedule 19.11.2011

Если у вас уже есть файл Root.strings, который представляет собой «Список свойств (двоичный)», и вы хотите преобразовать его в правильный текстовый файл строк, вы можете использовать plutil в приложении Терминала, чтобы преобразовать его, например, в 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";

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

person Rolleric    schedule 15.05.2013