Управление переводами

Файлы локализации (Strings)

Контент автоматически переведен с английского языка с помощью Phrase Language AI.

Файлы локализации — это текстовые файлы, которые можно открывать и редактировать в текстовом редакторе, таком как Notepad или TextEdit, или одном из множества Инструментов расширенного редактирования текста, используемых программистами. Эти файлы, как правило, соответствуют принципу «ключ-значение». Это означает, что они содержат список текстовых фрагментов (Strings), которые связаны с уникальными идентификаторами (ключами). Таким образом, каждая строка является значением ключа (этот простой пример — формат файлов локализации, используемых в программировании Java.):

  • key1 = value1

  • key2 = value2

  • ...

  • keyN = значениеN

Создание файлов локализации

Файлы локализации — это обычные текстовые файлы с простой структурой. Их можно создавать вручную, но обычно они автоматически генерируются утилитами интернационализации или сценариями, доступными для разных сред разработки. Автоматическое создание файлов локализации гарантирует действительность файловых структур.

Чтобы создать файл локализации, все фрагменты отображаемого текста заменяются уникальными идентификаторами в файлах кода. Затем текстовые Strings добавляются в файл локализации вместе с их идентификаторами.

Использовать файлы локализации

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

Если приложение настроено для использования на английском и испанском языках, весь текст на английском языке может храниться в файле под названием English.txt и является расположением текста по умолчанию. Если пользователь не выберет язык, весь текст будет извлечен из этого файла для создания какого-либо отображения. Если пользователь выбирает испанский, программное обеспечение перенаправляется на испанский.txt. С подобной системой можно использовать множество языков.

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

Управление строками

Как платформа для перевода на основе ключей Phrase поддерживает множество различных типов файлов ресурсов. После загрузки файлов и связанные с ними строковые значения извлекаются. Затем ключи и Strings предъявляются переводчику в стандартизированном формате. Переводчики фокусируются на своей задаче, не беспокоясь о точном формате файла локализации. Они могут проинспектировать ключи, ведь ключ сам по себе может обеспечить важнейший контекст и направлять их на правильный выбор слов.

Когда все Strings переведены, файлы скачиваются. При этом создается необходимый формат файла локализации по совпадению с исходным файлом.

Форматы файлов ресурса

Поддерживаются четыре широких типа ресурсов, все они основаны на тексте и могут быть открыты и проверены в текстовом редакторе.

Таблицы

Поддерживаются файлы .XLSX и .CSV. Эти форматы эквивалентны для целей локализации и содержат строки пар «ключ-значение». Ключи находятся в одной строке, в то время как соответствующие значения — в соседней строке. Какой именно столбец для каких целей используется, зависит от приложения, а для правильной интерпретации столбцов локализатору необходимо настроить phrase. Файлы Zendesk .CSV имеют фиксированную структуру, поэтому данный тип файлов не требует дополнительных настроек:

«Заголовок»,«Язык по умолчанию»,«Текст по умолчанию»,«Текст на английском языке»,«Статус варианта»
"simple_key","German","Einfacher Schlüssel.","Simple key.","Tекущий"

XML

XML — это формат, который предлагает метаинформацию в виде <tags>. Структура тега используется для определения того, где находятся ключи и соответствующие им значения, как показано здесь из файла Android XML:

 <string name="simple_key">Простой ключ с сообщением.</string>

Два стандартных формата перевода XML: .TMX и .XLIFF. Они не только хранят ключи и значения на одном языке, но и связывают пары значений из языка оригинала с соответствующими значениями из языка перевода. Такие файлы обычно являются двуязычными, как показывает эта единица перевода в файле Symfony Xliff:

<trans-unit Идентификатор="simple_key" resname="simple_key">
 < оригинал xml:lang="de- DE">Nur einfacher Schlüssel mit einer einfachen Nachricht.</ оригинал
<Перевод xml:lang="en-GB">Простой простой ключ с простым сообщением.</перевод>
</trans-unit>

Программы контроля качества (QT) используют файлы ресурсов со структурой, очень похожей на эти стандартизированные форматы, но по историческим причинам имеющей другой формат.

Простые списки значений ключей

Существуют файлы ресурсов, которые содержат просто простые списки ключей и значений, как показывает этот фрагмент из YAML Ruby on Rails:

simple_key: Просто простой ключ с простым сообщением.

Многие языки программирования или платформы используют такие форматы с Незначительными различиями в раскладке.

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

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

# Это потрясающее описание для этого ключа!
msgid "key_with_description"
msgid_plural ""
msgstr[0] «Проверьте! 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": "Я простой ключ с простым сообщением.".

Поскольку есть эти Незначительные, но существенные различия, поддерживаются широко используемые структуры массива .JSON и .PHP.

Была ли эта статья полезной?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.