Файлы локализации — это текстовые файлы, которые можно открывать и редактировать в текстовом редактор, таком как Notepad или TextEdit, или в одном из множества расширенных Инструменты редактирования текста, используемых программистами. Эти файлы обычно следуют принципу ключ-значение. Это означает, что они содержат список фрагментов текста (Strings), которые связаны с уникальными идентификаторами (ключ). Таким образом, каждая строка является значением ключ (Этот простой пример — формат файлов локализации, используемых в программировании на Java):
-
ключ1 = значение1
-
ключ2 = значение2
-
...
-
ключN = значениеN
Создать файлов локализации
Файлы локализации — это текстовые файлы с простой структурой. Их можно создать вручную, но обычно они автоматически генерируются утилитами интернационализации или скриптами, доступными для различных сред разработки. Автоматическое создание файлов локализации гарантирует правильность структуры файлов.
Чтобы Создать файл локализации, все фрагменты отображаемого текста заменяются уникальными идентификаторами в файлах кода. Затем текстовые Strings добавляются в файл локализации вместе со своими ключами.
Использовать файлов локализации
Вместо фактических текстовых Strings код теперь содержит только ключи. Когда программное обеспечение формирует представление для пользователь, эти ключи используются для поиска связанных Strings в файле локализации.
Если приложение настроить для использования на английском и испанском языках, весь английский текст может храниться в файле под названием English.txt, который является расположением текста по умолчанию. Если пользователь не Выбрать язык, весь текст будет извлекаться из этого файла для формирования любого отображения. Если пользователь Выбрать испанский, программное обеспечение перенаправляется на Spanish.txt. С такой системой можно использовать множество языков.
Преимущество заключается в том, что выбор язык для отображения не влияет на код. Если программному обеспечению нужно отобразить кнопку входа, ему может потребоваться строка, связанная с ключ login_button, и ему нужно только знать, в каком файле искать, чтобы получить соответствующую строка для данного язык.
Управление Strings
Будучи платформой перевода на основе ключ, Phrase поддерживает множество различных типов файлов ресурсов. После того как файлы загружены, ключ и связанные с ними значения строка извлекаются. Затем ключ и Strings представляются переводчик в стандартизированный формат. Переводчики сосредотачиваются на своей задача, не беспокоясь о точном формат файла локализации. Они могут изучить ключ, поскольку сам ключ может предоставить важный контекст и помочь им в выборе правильных слов.
Когда все Strings переведены, файлы загружаются. В процессе создается необходимый формат файла локализации, который соответствует оригинал файлу.
Ресурсные формат файлов
Поддерживаются четыре основных типа ресурсов, все они по сути основаны на тексте и могут быть открыты и просмотрены в текстовый редактор.
Электронные таблицы
Поддерживаются файлы .XLSX и .CSV. Эти формат эквивалентны для целей локализации и содержат строки пар ключ-значение. Ключи находятся в одной строке, а соответствующие значения — в соседней строке. То, какой именно столбец используется для какой цели, зависит от приложения, и локализатору необходимо настроить Phrase для правильной интерпретации столбцов. Файлы .CSV Zendesk имеют фиксированную структуру, поэтому этот тип файла не требует дальнейших настроек:
"Название","Язык по умолчанию","Текст по умолчанию","Английский текст","Статус варианта" "simple_key","Немецкий","Einfacher Schlüssel.","Простой ключ.","Текущий"
XML
XML — это формат, который предлагает метаинформацию в виде <теги>. Структура тегов используется для определения того, где находятся ключи и соответствующие им значения, как показано здесь на примере файла Android XML:
<string name="simple_key">Just a key with a message.</string>
Два стандартных формата перевода XML — это .TMX и .XLIFF. Они не только содержат ключи и значения на одном языке, но и связывают пары значений из оригинала языка с соответствующими значениями из перевода языка. Такие файлы обычно являются двуязычными, как показывает эта единица перевода в файле Symfony Xliff:
<trans-unit id="simple_key" resname="simple_key"> <source xml:lang="de-DE">Nur ein einfacher Schlüssel mit einer einfachen Nachricht.</source> <target xml:lang="en-GB">Just a simple key with a simple message.</target> </trans-unit>
Программы QT используют файлы ресурсов со структурой, очень похожей на эти стандартизированные форматы, но по историческим причинам имеющие другую компоновку.
Простые списки ключ-значение
Существуют файлы ресурсов, содержащие просто простые списки ключей и значений, как показывает этот фрагмент из Ruby on Rails YAML:
simple_key: Just a simple key with a simple message.
Многие различные языки программирования или платформы используют такие форматы с Незначительными различиями в компоновке.
Поскольку это одноязычные файлы, программе локализации необходимо поддерживать параллельные версии таких файлов — одну для оригинала языка и другие для перевода языков.
Gettext создает файлы ключ-значение, содержащие дополнительную информацию, такую как описательные комментарии или варианты множественного числа:
# Это потрясающее описание для этого ключа! msgid "key_with_description" msgid_plural "" msgstr[0] "Check it out!" This key has a description! (At least in some formats)" msgstr[1] "Зацените!" У этого ключа есть %s описаний! (At least in some formats)"
Существуют конкурирующие форматы с похожей функциональностью и макетами, которые различаются относительно незначительными способами.
Ассоциативные массивы
В то время как другие форматы требуют пользовательского кода (парсеров) для их чтения, некоторые форматы проще для разработчиков и локализаторов. Форматы на основе .JSON (JavaScript) и массивов .PHP могут быть прочитаны и сопоставлены непосредственно с общими структурами кода (массивами), которыми легко манипулировать. Массивы могут быть сложными, и разные приложения генерируют пользовательские структуры массивов.
Например, go-i18n JSON ссылается на ключи как Идентификатор:
{
"id": "simple_key",
"translation": "simple key, simple message, so simple."
},
Angular использует сами ключи в качестве ключей в своих массивах:
"simple_key": "I am a simple key with a simple message.".
Поскольку существуют эти незначительные, но важные различия, поддерживаются широко используемые структуры массивов .JSON и .PHP.