Локализованный проект с несколькими целевыми объектами с локализованными именами приложений
Недавно я объединил 5 своих автономных проектов в один проект, чтобы иметь общую кодовую базу. Так что теперь у меня есть один проект с 5 целями вместо этого.
Каждая цель имеет один и тот же набор файлов, за исключением некоторых файлов, которые отличаются для каждой цели (например, Default.png, и файлы иконок среди других).
Мое приложение переведено на 7 языков с английским языком по умолчанию. Другие языки: шведский, голландский, немецкий, французский, польский и испанский.
Теперь я тоже хотел бы ... переводите название приложения в зависимости от используемого языка.
Например, для моей шведской авиации приложение, приложение должно называться "Flyget Арн" на шведском языке, но на английском языке следует назвать "авиационная Арн".
Все это не является проблемой, так как это делается в InfoPlist.string
, однако сочетание этого с локализацией приложения является проблемой.
Недавно я написал этот вопрос: несколько локализаций, но все еще показывающих только английский язык и обнаружил, что я не могу объединить несколько .файлы строк. (смотрите ответ, который я написал).
Итак, мой вопрос заключается в следующем:
Как я могу получить локализованное приложение из проекта, содержащего несколько целевых объектов, а также локализовать имя приложения, не имея сухого нарушения (дубликата кода).
обновление
Это все еще вопрос, ответы, данные не решают мою проблему.
6 ответов:
Я расколол этот орех в проекте XCode, который, как я полагаю, решает ту же проблему, что и вы, так что, надеюсь, это поможет вам. Решение содержит две цели, построенные из одной и той же кодовой базы (с разными именами приложений) и полностью локализованные, включая имена приложений. (Он строит мое приложение freemium под названием Growth (французский: Croissance, испанский: Crecer) и платную версию под названием Growth+ (французский: Croissance+, испанский: Crecer+).
Я также наткнулся на файлы
InfoPlist.string
(которые содержат только имя приложения). Я обошел проблему с помощью вложенных папок в своем решении и изменил целевые объекты, чтобы включить локализованный набор InfoPlist.строки из соответствующей подпапки. В частности, у меня есть такая структура:Root +-- en.lproj ¦ +-- Localizable.strings ¦ +-- SomeXib.xib +-- es.lproj ¦ +-- Localizable.strings ¦ +-- SomeXib.xib +-- fr.lproj ¦ +-- Localizable.strings ¦ +-- SomeXib.xib +-- OnlyInAppA ¦ +-- en.lproj ¦ ¦ +-- InfoPlist.strings ¦ +-- es.lproj ¦ ¦ +-- InfoPlist.strings ¦ +-- fr.lproj ¦ +-- InfoPlist.strings +-- OnlyInAppB ¦ +-- en.lproj ¦ ¦ +-- InfoPlist.strings ¦ +-- es.lproj ¦ ¦ +-- InfoPlist.strings ¦ +-- fr.lproj ¦ +-- InfoPlist.strings +-- AppA.plist +-- AppB.plistИ единственная разница между моими целями (кроме разных символов препроцессора и разных .plist file) заключается в том, что настройки сборки AppA включают Инфо.Файл plist.строковые файлы находятся под OnlyInAppA, в то время как настройки сборки AppB включают информацию.Файл plist.строки файлов под OnlyInAppB.
Соглашение об именовании, которое я использовал (папки OnlyInAppA/OnlyInAppB, файлы AppB / AppB plist), достаточно очевидно, чтобы сделать этот подход удовлетворительным, по моему личному мнению.
Редактировать:
Пожалуйста, посмотрите эти два скриншота XCode 4, чтобы увидеть, где именно найти настройки, которые были изменены в целях.
В городе настройки целевой сборки, указывается другой файл plist (Примечание: XCode автоматически делает это за вас, когда вы добавляете новый целевой объект)
На целевых этапах сборки в разделе копирование ресурсов пакета выберите версию InfoPlist.строки из соответствующей подпапки OnlyInAppX (обратите внимание на серый текст рядом с InfoPlist.строки на этом скриншоте-это покажет другое местоположение для другой цели). Вы можете добиться этого с помощью кнопок +/- и заменить файл на тот самый, о котором шла речь.
Если эта проблема все еще сохраняется: я нашел решение о том, как добавить несколько InfoPlist.строка локализована для каждой цели в вашем проекте. Пожалуйста, выполните следующие действия:
Я предполагаю, что у вас уже есть несколько целей.
- перейдите в папку проекта в Finder.
Создайте папку, специфичную для каждого целевого объекта:
Создать InfoPlist.файл строк в каждой папке:
Добавление папок в целевые объекты указание правильного (и только!) цель для каждой папки в вашем проекте:
Удалить целевую зависимость для исходного списка InfoPlist.файл строк для каждой новой цели.
Локализовать новый InfoPlist.файлы строк:
Построение целевых объектов и проверка путем изменения языковых настроек:
Просто держать все InfoPlist.строки файлов, в разделе отдельные пути. Каждый будет членом только одной цели.
Или я не понял вопроса?
У меня есть аналогичная настройка, где мое же программное обеспечение поддерживает несколько доменов, каждый домен обращается к точно таким же путям для различных модулей (например, блог, форумы). Чтобы сохранить индивидуальность каждого домена, особенно когда служба баз данных становится недоступной, я сохраняю критическую информацию в файлах, в основном метаинформацию. Для локализации я бы сохранил переменную, сохраняющую язык по умолчанию для каждого сайта / проекта. Вы можете определить файлы, содержащие информацию, чтобы иметь их владейте доменом или храните все проекты в одном файле, в любом случае вы захотите использовать его для вашего окончательного запасного варианта или если у вас просто нет дополнительных общедоступных опций для любого/всех с более низкими разрешениями, чем у вас, пока вы не реализуете такие опции (пользователи могут переопределить опцию языка).
Я делаю именно это для своих приложений.
Когда я изменяю язык по умолчанию для телефона, он правильно подбирает имена в каждом из моих списков infoPlist.файлы строк.
Но я сделал это с нуля. я не знаю, придется ли вам отступать, чтобы получить желаемое поведение. возможно, сохранить в сторону свои различные infoPlist.строковые файлы из любых папок локализации, затем выполните следующие действия, а затем повторно вставьте содержимое из текущего списка infoPList.строки файлов в ваш вновь созданные файлы из следующих шагов.
Я использую Xcode 4.3 . шаги:
1) настройте нужные строки для языка по умолчанию в info-plist.веревка. вы должны закончить с одним файлом:
2) Теперь откройте файловый инспектор
3) в инспекторе, расположенном в дальнем правом углу, теперь можно щелкнуть значок + в нижней части навигатора:
4) после того, как вы выбрали интересующий вас язык(языки)., они будут отображаться в навигаторе проекта слева следующим образом:Вы также можете сделать это для локализуемых.строки и другие файлы (например, индекс.html в следующем примере фото):
Попробуйте посмотреть iTunesConnect_DeveloperGuide
И смотрите раздел "добавление новой локализации"
Здесь вы можете написать локализованное имя приложения для каждого языка