Поддерживаемые форматы файлов#

Weblate supports a wide range of translation formats. Each format is slightly different and provides a different set of capabilities.

Подсказка

При выборе формата файла для вашего приложения лучше придерживаться какого-нибудь устоявшегося формата для используемого вами инструментария/платформы. Таким образом, ваши переводчики в дополнение смогут использовать любые инструменты, к которым они привыкли, и вероятность внесения ими своего вклада в ваш проект будет выше.

Автоматическое обнаружение#

Weblate tries to detect file format during Добавление проектов и компонентов перевода. The detection might be wrong for different variants of the same serialization format (JSON, YAML, properties) or file encoding, so please verify that Формат файла is correct before creating the component.

Возможности типов переводов#

Capabilities of all supported formats#

Формат

Язычность [1]

Множественные формы [2]

Описании [3]

Контекст [4]

Расположение [5]

Флаги [8]

Дополнительные состояния [6]

GNU gettext

двуязычный

да

да

да

да

да [9]

требуется правка

Одноязычный gettext

одноязычный

да

да

да

да

да [9]

требуется правка

XLIFF

оба

да

да

да

да

да

требуется правка, одобрено

Файлы свойств Java

оба

нет

да

нет

нет

нет

файлы mi18n lang

одноязычный

нет

да

нет

нет

нет

Файлы свойств GWT

одноязычный

да

да

нет

нет

нет

Переводы Joomla

одноязычный

нет

да

нет

да

нет

Файлы .ts Qt Linguist

оба

да

да

нет

да

да

требуется правка

Строковые ресурсы Android

одноязычный

да

да [7]

нет

нет

да

Строки Apple iOS

оба

нет

да

нет

нет

нет

Строки PHP

одноязычный

нет [10]

да

нет

нет

нет

JSON-файлы

одноязычный

нет

нет

нет

нет

нет

Файлы JSON i18next

одноязычный

да

нет

нет

нет

нет

JSON-файлы go-i18n

одноязычный

да

да

нет

нет

нет

Файл JSON gotext

одноязычный

да

да

нет

да

нет

Файл ARB

одноязычный

да

да

нет

нет

нет

JSON-файлы WebExtension

одноязычный

да

да

нет

нет

нет

RESX .NET resource files

одноязычный

нет

да

нет

нет

да

Файлы ResourceDictionary

одноязычный

нет

нет

нет

нет

да

Файлы CSV

оба

нет

да

да

да

нет

требуется правка

Файлы YAML

одноязычный

нет

нет

нет

нет

нет

Файлы Ruby YAML

одноязычный

да

нет

нет

нет

нет

Файлы DTD

одноязычный

нет

нет

нет

нет

нет

Плоские XML-файлы

одноязычный

нет

нет

нет

нет

да

Файлы ресурсов Windows

одноязычный

нет

да

нет

нет

нет

Excel Open XML

одноязычный

нет

да

да

да

нет

требуется правка

Файлы метаданных магазина приложений

одноязычный

нет

нет

нет

нет

нет

Файлы субтитров

одноязычный

нет

нет

нет

да

нет

Файлы HTML

одноязычный

нет

нет

нет

нет

нет

Формат OpenDocument

одноязычный

нет

нет

нет

нет

нет

Формат IDML

одноязычный

нет

нет

нет

нет

нет

Переводы в INI-файлах

одноязычный

нет

нет

нет

нет

нет

Переводы в INI-файлах Inno Setup

одноязычный

нет

нет

нет

нет

нет

Формат TermBase eXchange

двуязычный

нет

да

нет

нет

да

Текстовые файлы

одноязычный

нет

нет

нет

нет

нет

Формат Stringsdict

одноязычный

да

нет

нет

нет

нет

Формат Fluent

одноязычный

нет [11]

да

нет

нет

нет

Двуязычные и одноязычные форматы#

Поддерживаются как одноязычные, так и двуязычные форматы. Двуязычные форматы хранят в одном файле два языка — исходный язык и перевод (типовые примеры: GNU gettext, XLIFF или Строки Apple iOS). Одноязычные же форматы, напротив, идентифицируют строку по ID, и каждый файл перевода содержит только сопоставление этих ID с одним конкретным языком (например, Строковые ресурсы Android). Некоторые форматы файлов могут использоваться и так, и так; подробности смотрите ниже.

Для правильного использования одноязычных файлов Weblate требует доступа к файлу, содержащему полный список строк для перевода и их «перевод» на исходный язык — этот файл внутри Weblate называется одноязычным базовым файлом, хотя в вашей парадигме наименование этой сущности может отличаться.

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

String states#

Many file formats only differentiate «Untranslated» and «Translated» strings. With some formats it is possible to store more fine-grained state information, such as «Needs editing» or «Approved».

Описание исходной строки#

Source string descriptions can be used to pass additional info about the string to translate.

Several formats have native support for providing additional info to translators (for example XLIFF, GNU gettext, JSON-файлы WebExtension, Файлы CSV, Excel Open XML, Файлы .ts Qt Linguist, JSON-файлы go-i18n, Файл JSON gotext, Файл ARB, RESX .NET resource files). Many other formats extract closest comment as source string description.

Пояснение#

The Пояснение on strings can be stored and parsed from a few file formats.

Currently supported only in Формат TermBase eXchange.

Расположение исходной строки#

Расположение строки в исходном коде может помочь опытным переводчикам понять предназначение этой строки.

This information is typically available in bilingual formats where strings are extracted from the source code using tools. For example GNU gettext and Файлы .ts Qt Linguist.

Флаги перевода#

Translation flags allow customizing Weblate behavior. Some formats support defining those in the translation file (you can always define them in the Weblate interface, see Настройка поведения с помощью флагов).

This feature is modelled on flags in GNU gettext.

Additionally, for all XML based format, the flags are extracted from the non-standard attribute weblate-flags. Additionally max-length:N is supported through the maxwidth attribute as defined in the XLIFF standard, see Указание флагов перевода.

Контекст#

Context is used to differentiate identical strings in a bilingual format used in different scopes (for example Sun can be used as an abbreviated name of the day «Sunday» or as the name of our closest star).

For monolingual formats the string identifier (often called key) can serve the same purpose and additional context is not necessary.

Строки с множественным числом#

Plurals are necessary to properly localize strings with variable count. The rules depend on a target language and many formats follow CLDR specification for that.

Подсказка

Pluralizing strings need proper support from the application framework as well. Choose native format of your platform such as GNU gettext, Строковые ресурсы Android or Формат Stringsdict.

Строки только для чтения#

Добавлено в версии 3.10.

Строки из файлов перевода, доступные только для чтения, будут включены, но не могут быть отредактированы в Weblate. Поддержка этой возможности уже встроена в некоторые форматы (XLIFF и Строковые ресурсы Android), а в других может быть сэмулирована добавлением к строке флага read-only — смотрите раздел Настройка поведения с помощью флагов.

Поддержка других форматов#

Большинство форматов, которые поддерживают сериализацию и которые поддерживает translate-toolkit, могут поддерживаться с лёгкостью, но они (пока) ни как не тестировались. В большинстве случаев, чтобы скрыть различия в поведении различных хранилищ translate-toolkit, в Weblate приходится добавлять тонкую прослойку.

Чтобы добавить поддержку нового формата, предпочтительный подход состоит в том, чтобы сначала реализовать его поддержку в translate-toolkit.