Управление строковыми файлами самостоятельно
Выполните шаги в этом приложении, если Вы хотите генерировать и перевести строковые файлы, хранившие в папке проекта сами. В этом случае Вы добавляете языки, Вы хотите поддерживать, генерировать строковые файлы и локализовать строковое использование файлов глоссарии 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
папка содержит текст заполнителя, который должен быть переведен в немецкий язык.
Для приложения Mac, использующего английский язык в качестве языка разработки, файловая структура может быть подобна:
Создание строковых файлов для бывшего обращенным к пользователю текста в коде
После Вас строки замены, содержащие бывший обращенным к пользователю текст с NSLocalizedString
макросы, как описано в Разделении Бывшего обращенным к пользователю текста от Вашего Кода, можно создать и локализовать соответствующие строковые файлы.
Создать строковый файл для бывшего обращенным к пользователю текста
Используйте
genstrings
сценарий для создания версии языка разработкиLocalizable.strings
файл.В Терминале, выполненном эти команды:
cd [Project folder]
find . -name \*.m | xargs genstrings -o .
Для каждого возникновения
NSLocalizedString
макрос в исходных файлах, сценарий добавляет комментарий, сопровождаемый парой ключ/значение (использующий текст заполнителя для значения) кLocalizable.strings
файл, как в:/* distance for a marathon */
"RunningDistance" = "RunningDistance";
Если Вы используете
NSLocalizedString
макрос в Вашем коде, значении для ключевых значений по умолчанию к ключу. Если Вы хотите различное поведение, используйте один из другогоNSLocalizedString
макросы, которые берут больше параметров, описанных в Ссылке Функций Основы.Добавьте
Localizable.strings
файл ко всем папкам языка.Добавьте файл к своему проекту XCode, как описано в Добавлении Дополнительных Ресурсов к Папкам Языка. Не добавлять
Localizable.strings
к Основной локализации, когда появляется диалоговое окно.Локализуйте
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 キロメートル";
Протестируйте свое приложение на нескольких языках, как описано в Тестировании Вашего Международного приложения.
Инкрементно протестируйте свое приложение при создании этих типов изменений в коде. Локализуйте один набор файлов языка или используйте методы псевдолокализации, описанные в Тестировании Используя Псевдолокализации.
Локализация строковых файлов
Когда Вы добавляете язык к своему проекту, 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
В Терминале создайте среду AppleGlot.
mkdir [MyAppleGlotEnvironment]
cd [MyAppleGlotEnvironment]
appleglot -w create .
Установите входные и выходные языки.
appleglot -w setlangs [base_language_id] [target_langauge_id]
Например, если язык разработки является английским, и цель является российской, передача
en
дляbase_language_id
иru
дляtarget_langauge_id
.В Средстве поиска вставьте папки ресурса языка в среду AppleGlot
_NewBase
папка.Если Вы используете основную интернационализацию, вставляете специфичную для языка папку,
[target_language_id].lproj
, в_NewBase
папка, и изменяет имя папки к[base_language_id].lproj
. Например, вставкаru.lproj
в_NewBase
, и измените имя наen.lproj
.Иначе, если Вы не используете основную интернационализацию,
[base_language_id].lproj
папка должна содержать все строковые файлы, которые Вы хотите переведенный на выходной язык.Откройте глоссарий выходного языка .dmg и скопируйте глоссарии (файлы с
.lg
расширение) в_LanguageGlossaries
папка.В Терминале заполните
_NewLoc
папка.appleglot -w populate
Это создает a
.ad
файл в_ApplicationDictionaries
папка с ранее переведенными строками и a.wg
файл в_WorkGlossary
папка, содержащая все строки в Вашем проекте с как можно большим количеством переводов из Ваших Глоссариев Языка.Дополнительно, локализуйте остающиеся строки в файлах с
ad
иwg
расширения с помощью стороннего инструмента локализации, поддерживающего эти форматы файлов.В Терминале интегрируйте переводы назад в Ваши строковые файлы.
appleglot -w update
appleglot -w finalize
В Средстве поиска вставьте локализованные ресурсы в свою папку проекта XCode.
Вставьте содержание
_NewLoc/[base_language_id].lproj
папка в Ваш[target_language_id].lproj
папка в папке проекта XCode. Например, вставьте содержание_NewLoc/en.lproj
папка вru.lproj
папка, если выходной язык является российским.Для тестирования локализации запустите приложение с помощью выходного языка, как описано в Тестировании Определенных Языков и Локалей в XCode.
Для приложений Mac элементы главного меню из шаблона Xcode кажутся переведенными кроме случаев имени приложения.
Для получения дополнительной информации о AppleGlot считайте руководство пользователя AppleGlot 4, расположенное в AppleGlot.dmg
файл.
Обновление Строковых Файлов Раскадровки и Xib Используя ibtool
Когда Вы изменяете бывший обращенным к пользователю текст в .storyboard
или .xib
файлы, используйте ibtool
команда для генерации новых строковых файлов. Используйте другой инструмент — например, FileMerge — чтобы идентифицировать изменения и объединить их в существующие строковые файлы для каждого языка, который Вы поддерживаете. XCode автоматически не обновляет соответствующие строковые файлы при редактировании a .storyboard
или .xib
файл.
В Терминале, изменении в Base.lproj
папка, и выполненный эта команда для генерации строкового файла для xib файла:
ibtool [MyNib].xib --generate-strings-file [MyNib_new.strings]
Дополнительно, локализуйте изменения в выходном файле прежде, чем объединить изменения с файлом [MyNib] .strings в каждом lproj
папка. Для запуска FileMerge от XCode выберите Xcode> Open Developer Tool> FileMerge.
Также можно использовать ibtool
команда, чтобы объединить переводы назад в файл пера и выполнить другие инкрементные обновления локализации, как описано в ibtool
страница справочника. Или используйте appleglot
команда для управления изменений к строковым файлам, как описано в Локализации текста Используя AppleGlot.
Создание псевдолокализации
Если опции псевдолокализации, описанные в Тестировании Вашего Интернационализировавшего Приложения, не достаточны для тестирования приложения, создайте собственный pseudolocaliation. Добавьте язык к своему проекту, как описано на Добавляющих Языках. Отредактируйте строковые файлы в папке языка путем замены текста заполнителя псевдотекстом. Установите параметр запуска языка, как описано в Тестировании Определенных Языков и Локалей в XCode, и выполните Ваше приложение.
Например, отредактируйте текст заполнителя в строковом файле путем добавления характеристик мировых языков, но хранения оригинального текста читаемым, как в:
/* distance for a marathon */ |
"RunningDistance" = "[ŔûüñńîńɠƊïšṱáäńçêè]"; |
Один метод должен добавить префикс и суффикс к каждой строке. Тогда можно легко идентифицировать, где эти префиксы и суффиксы не появляются при тестировании приложения. Используйте многобайтовые символы для префиксов, чтобы проверить ли Ваши поддержки приложений такие символы.