Локализация XIB в XCode4 сводит меня с ума? - PullRequest
0 голосов
/ 19 октября 2011

после многих безуспешных попыток разобраться с локализацией XIB в XCode 4, я решил опубликовать запрос помощи здесь:).

1) Я выбираю файл XIB, скажем, MyViewController.XIB.

2) Я нажимаю кнопку [+] в области Локализация на правой панели, но невозможно выбрать язык.После нажатия кнопки мыши я не знаю, почему выбран другой ресурс (например, другой файл XIB).

3) В интерфейсе XCode ничего не происходит, но в файловой системе файл MyVieController.XIB перемещается (MOVED!НЕ КОПИРОВАН.) В папке en.lproj.

4) Я добавляю новую локализацию (на этот раз я могу выбрать язык), скажем, итальянский.

5) В интерфейсе XCode теперь вижудва «потомка» MyViewController.XIB: английский и итальянский.

6) Еще одна странная вещь заключается в том, что «основной» MyViewController.XIB и его английская версия указывают на один и тот же файл (в en.папка lproj), чтобы любые изменения, сделанные в первом, автоматически выполнялись во втором и наоборот.

У кого-нибудь из вас есть объяснение этому поведению, которое мне кажется очень странным?

Спасибозаранее за ваши ответы,

Марко.

Ответы [ 2 ]

3 голосов
/ 19 октября 2011

Я считаю, что это поведение является преднамеренным и согласуется с лучшими практиками в отношении локализации.

Вообще говоря, верхний уровень каталога Resources предназначен только для локализованных XIB / NIB. После локализации определенного XIB он должен храниться в основной языковой папке, а любые локализации - в других языковых папках.

По сути, Xcode помогает вам не создавать проблему, перемещая ваш «основной» MyViewController.XIB в папку en.lproj (которая должна быть любой, которую вы указали в качестве собственной области разработки) в качестве первого шага для добавления новый язык для этого файла.

OS X (и iOS) достаточно умны, чтобы использовать язык по умолчанию (как указано в CFBundleDevelopmentRegion a / k / a / Localization native development region), когда ресурс не существует в Resources или в настоящее время активен язык.

Если вы хотите создавать только французские и итальянские версии (без английского), просто убедитесь, что вы установили CFBundleDevelopmentRegion для соответствующего кода языка, и ОС будет искать в этом каталоге все ресурсы, которых нет в локализованный пучок.

После того, как вы установили это, Xcode должен (но не появляется) поместить преобразованные файлы в требуемый каталог по умолчанию. Небольшое копание указывает на то, что, редактируя файл project.pbxproj вручную, вы можете установить developmentRegion на что-то отличное от английского (я тестировал с fr), и это заставит Xcode разместить локализованные файлы в нужном месте.

0 голосов
/ 20 ноября 2012

Я довольно новичок в размещении ответов здесь, поэтому, пожалуйста, не увольняйте меня, если это не лучшее место для этого решения.

Хотя это не прямой ответ на ваш вопрос "Любой из васесть объяснение ... "Я чувствую себя обязанным ответить на вашу тему" Локализация XIB в XCode4 сводит меня с ума? "потому что я искал ответ на этот самый вопрос, и я нашел этот ответ в другом месте.

Моя проблема = после локализации моих файлов XIB на английском и французском языках, как указано в ваших пунктах 1) -5) мой iPhoneПриложение будет по-прежнему отображать только английский XIB вместо французского.Французские XIB были созданы и сделаны правильно в XCode, и оказалось, что что-то другое, что-то не связанное, вызывало проблему.

Следующее решение заимствовано из Руководства ранчо Big Nerd.Я не ожидаю здесь никаких голосов, вся заслуга в превосходной книге от BNR.

Кажется, в Xcode есть сбой (согласно BNR, и это подтвердилось в моем случае), что иногда Xcodeигнорирует новые изменения файла ресурсов.Чтобы решить проблему, удалите приложение с вашего iPhone, затем выберите «Очистить» в меню «Продукт».Это гарантирует, что приложение будет перестроено с нуля.В моем случае после этого французские XIB загружались прекрасно, как и ожидалось.

...