Управление строковыми файлами самостоятельно

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

Если Вы хотите управлять своими собственными строковыми файлами, сначала добавьте языки, которые Вы хотите поддерживать к Вашему проекту, как описано на Добавляющих Языках.

Просмотр папок языка в средстве поиска

После импорта локализаций или добавления языков, можно просмотреть различные папки языка в Средстве поиска. Локализованные ресурсы, появляющиеся в группах в навигаторе проекта, находятся в отдельных папках языка в папке проекта. Когда Вы экспортируете и импортируете локализации, XCode управляет этими папками для Вас. Просмотреть папки языка в Средстве поиска, Щелчок управления проект в навигаторе проекта и выбрать «Show in Finder» из контекстного меню.

Папка проекта должна содержать одну названную папку Base.lproj и другие специфичные для языка папки с .lproj расширение. Префикс для папок языка является языком ID, как описано на Языке и Локали IDs.

Base.lproj папка содержит весь .storyboard или .xib файлы на языке разработки. Папки для языков, которые Вы добавляете к своему проекту, содержат строковый файл для каждого .storyboard или .xib файл в Вашем проекте. Папка языка разработки не содержит строковые файлы для .storyboard и .xib файлы, потому что они не требуют перевода на языке разработки. Все папки языка содержат a InfoPlist.strings файл раньше локализовал свойства пакета, такие как имя приложения. Любые другие локализованные ресурсы — такие как строковые файлы, которые Вы генерируете и используете от своего кода — появляются в этих папках языка.

Например, для универсального приложения для iOS, использующего английский язык в качестве языка разработки, Base.lproj папка содержит Main_iPad.storyboard и Main.iPhone.storyboard, и en.lproj папка содержит InfoPlist.strings. Если Вы добавляете немецкий язык, XCode создает a de.lproj папка, содержащая a InfoPlist.strings, Main_iPad.strings, и Main_iPhone.strings файл. Файлы в de.lproj папка содержит текст заполнителя, который должен быть переведен в немецкий язык.

../Art/ios_project_folders_2x.png

Для приложения Mac, использующего английский язык в качестве языка разработки, файловая структура может быть подобна:

../Art/mac_project_folders_2x.png

Создание строковых файлов для бывшего обращенным к пользователю текста в коде

После Вас строки замены, содержащие бывший обращенным к пользователю текст с NSLocalizedString макросы, как описано в Разделении Бывшего обращенным к пользователю текста от Вашего Кода, можно создать и локализовать соответствующие строковые файлы.

Создать строковый файл для бывшего обращенным к пользователю текста

  1. Используйте genstrings сценарий для создания версии языка разработки Localizable.strings файл.

    В Терминале, выполненном эти команды:

    • cd [Project folder]

    • find . -name \*.m | xargs genstrings -o .

    Для каждого возникновения NSLocalizedString макрос в исходных файлах, сценарий добавляет комментарий, сопровождаемый парой ключ/значение (использующий текст заполнителя для значения) к Localizable.strings файл, как в:

    /* distance for a marathon */
    "RunningDistance" = "RunningDistance";

    Если Вы используете NSLocalizedString макрос в Вашем коде, значении для ключевых значений по умолчанию к ключу. Если Вы хотите различное поведение, используйте один из другого NSLocalizedString макросы, которые берут больше параметров, описанных в Ссылке Функций Основы.

  2. Добавьте Localizable.strings файл ко всем папкам языка.

    Добавьте файл к своему проекту XCode, как описано в Добавлении Дополнительных Ресурсов к Папкам Языка. Не добавлять Localizable.strings к Основной локализации, когда появляется диалоговое окно.

  3. Локализуйте Localizable.strings файл в каждой папке языка.

    Например, в en.lproj/Localizable.strings файл, введите английский перевод для RunningDistance ключ:

    /* distance for a marathon */
    "RunningDistance" = "26.22 miles";

    В ja.lproj/Localizable.strings файл, введите японский перевод для RunningDistance ключ:

    /* distance for a marathon */
    "RunningDistance" = "42.20 キロメートル";
  4. Протестируйте свое приложение на нескольких языках, как описано в Тестировании Вашего Международного приложения.

    Инкрементно протестируйте свое приложение при создании этих типов изменений в коде. Локализуйте один набор файлов языка или используйте методы псевдолокализации, описанные в Тестировании Используя Псевдолокализации.

Локализация строковых файлов

Когда Вы добавляете язык к своему проекту, XCode добавляет весь бывший обращенным к пользователю текст, который это находит в .storyboard или .xib файл к соответствующему строковому файлу. XCode вставляет комментарий перед каждой парой ключ/значение, идентифицирующей представление, выводящее на экран текст. Например, в этом фрагменте строкового файла, заголовка столбца Location и метки текстового поля Address: и for: потребуйте перевода.

/* Class = "NSTableColumn"; headerCell.title = "Location"; ObjectID = "f0Y-kT-hVz"; */
"f0Y-kT-hVz.headerCell.title" = "Location";
 
/* Class = "NSTextFieldCell"; title = "Address:"; ObjectID = "gfa-oA-9cr"; */
"gfa-oA-9cr.title" = "Address:";
 
/* Class = "NSTextFieldCell"; title = "for:"; ObjectID = "gsV-Sg-yiA"; */
"gsV-Sg-yiA.title" = "for:";

genstrings сценарий также ищет Ваш код бывший обращенным к пользователю текст и добавляет его к строковому файлу, как описано в Использовании Строковых Файлов для Бывшего обращенным к пользователю текста. Формат файла является тем же кроме Вашего кода, обеспечивает комментарий для переводчиков. Для локализации строкового файла дайте переводчикам команду заменять текст заполнителя — который появляется направо от знака «равно» ниже комментария — с локализованным текстом.

Локализация строковых файлов Используя AppleGlot

Также используйте AppleGlot для выполнения некоторых начальных переводов строковых файлов. Например, используйте AppleGlot для локализации текста для представлений, что XCode добавил к пользовательскому интерфейсу на основе шаблона, который Вы выбрали при создании проекта. Тогда можно фокусироваться на локализации только специфичного для приложения текста, который Вы добавили к пользовательскому интерфейсу.

AppleGlot является инструментом локализации для разработчиков приложений Mac и iOS. AppleGlot обеспечивает iOS и глоссарии языка Mac для помощи Вам в переводе общих текстовых строк. Это может также экспортировать бывший обращенным к пользователю текст в стандартные форматы, которые localizers может легко перевести на многократные языки. AppleGlot поддерживает поэтапную разработку так, чтобы Вы только перевели изменения в пользовательском тексте с каждым выпуском.

Для загрузки AppleGlot и глоссариев языка пойдите для Создания Приложений для Мира. При Программировании Ресурсов> Загрузки, нажмите «AppleGlot and Localization Glossaries». Если необходимо, введите свой Apple ID и нажмите, входят в систему. Загрузите .dmg файлы для AppleGlot и языков, которые Вы поддерживаете. Для установки AppleGlot откройтесь AppleGlot.dmg файл и дважды щелкает AppleGlot.pkg.

Перед локализацией файлов можно перевести все общее использование текстовых строк глоссарии языка AppleGlot.

Переводить Ваш .storyboard и .xib представляет использование файлов в виде строки глоссарии AppleGlot

  1. В Терминале создайте среду AppleGlot.

    • mkdir [MyAppleGlotEnvironment]

    • cd [MyAppleGlotEnvironment]

    • appleglot -w create .

  2. Установите входные и выходные языки.

    • appleglot -w setlangs [base_language_id] [target_langauge_id]

    Например, если язык разработки является английским, и цель является российской, передача en для base_language_id и ru для target_langauge_id.

  3. В Средстве поиска вставьте папки ресурса языка в среду AppleGlot _NewBase папка.

    Если Вы используете основную интернационализацию, вставляете специфичную для языка папку, [target_language_id].lproj, в _NewBase папка, и изменяет имя папки к [base_language_id].lproj. Например, вставка ru.lproj в _NewBase, и измените имя на en.lproj.

    Иначе, если Вы не используете основную интернационализацию, [base_language_id].lproj папка должна содержать все строковые файлы, которые Вы хотите переведенный на выходной язык.

  4. Откройте глоссарий выходного языка .dmg и скопируйте глоссарии (файлы с .lg расширение) в _LanguageGlossaries папка.

  5. В Терминале заполните _NewLoc папка.

    • appleglot -w populate

    Это создает a .ad файл в _ApplicationDictionaries папка с ранее переведенными строками и a .wg файл в _WorkGlossary папка, содержащая все строки в Вашем проекте с как можно большим количеством переводов из Ваших Глоссариев Языка.

  6. Дополнительно, локализуйте остающиеся строки в файлах с ad и wg расширения с помощью стороннего инструмента локализации, поддерживающего эти форматы файлов.

  7. В Терминале интегрируйте переводы назад в Ваши строковые файлы.

    • appleglot -w update

    • appleglot -w finalize

  8. В Средстве поиска вставьте локализованные ресурсы в свою папку проекта XCode.

    Вставьте содержание _NewLoc/[base_language_id].lproj папка в Ваш [target_language_id].lproj папка в папке проекта XCode. Например, вставьте содержание _NewLoc/en.lproj папка в ru.lproj папка, если выходной язык является российским.

  9. Для тестирования локализации запустите приложение с помощью выходного языка, как описано в Тестировании Определенных Языков и Локалей в XCode.

    Для приложений Mac элементы главного меню из шаблона Xcode кажутся переведенными кроме случаев имени приложения.

    ../Art/mac_appleglot_localization_2x.png

Для получения дополнительной информации о AppleGlot считайте руководство пользователя AppleGlot 4, расположенное в AppleGlot.dmg файл.

Обновление Строковых Файлов Раскадровки и Xib Используя ibtool

Когда Вы изменяете бывший обращенным к пользователю текст в .storyboard или .xib файлы, используйте ibtool команда для генерации новых строковых файлов. Используйте другой инструмент — например, FileMerge — чтобы идентифицировать изменения и объединить их в существующие строковые файлы для каждого языка, который Вы поддерживаете. XCode автоматически не обновляет соответствующие строковые файлы при редактировании a .storyboard или .xib файл.

В Терминале, изменении в Base.lproj папка, и выполненный эта команда для генерации строкового файла для xib файла:

Дополнительно, локализуйте изменения в выходном файле прежде, чем объединить изменения с файлом [MyNib] .strings в каждом lproj папка. Для запуска FileMerge от XCode выберите Xcode> Open Developer Tool> FileMerge.

Также можно использовать ibtool команда, чтобы объединить переводы назад в файл пера и выполнить другие инкрементные обновления локализации, как описано в ibtool страница справочника. Или используйте appleglot команда для управления изменений к строковым файлам, как описано в Локализации текста Используя AppleGlot.

Создание псевдолокализации

Если опции псевдолокализации, описанные в Тестировании Вашего Интернационализировавшего Приложения, не достаточны для тестирования приложения, создайте собственный pseudolocaliation. Добавьте язык к своему проекту, как описано на Добавляющих Языках. Отредактируйте строковые файлы в папке языка путем замены текста заполнителя псевдотекстом. Установите параметр запуска языка, как описано в Тестировании Определенных Языков и Локалей в XCode, и выполните Ваше приложение.

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

/* distance for a marathon */
"RunningDistance" = "[ŔûüñńîńɠƊïšṱáäńçêè]";

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