XLIFF

Примечание

Weblate в настоящее время поддерживает XLIFF 1.2. XLIFF 2.0 не поддерживается и не имеет обратной совместимости с XLIFF 1.2.

Формат на основе XML, созданный для стандартизации файлов перевода, но в конечном итоге ставший просто ещё одним из многочисленных стандартов в этой области.

Формат файла XML для обмена локализациями (XLIFF) обычно используется как двуязычный, но Weblate поддерживает его использование и в качестве одноязычного.

Weblate поддерживает XLIFF в нескольких вариантах:

Файл перевода XLIFF 1.2

Простой файл XLIFF, в котором содержимое элементов хранится в виде обычного текста (все Escape-элементы XML).

XLIFF 1.2 с поддержкой размещаемых объектов

Стандартный XLIFF, поддерживающий размещаемые объекты и другие элементы XML.

XLIFF 1.2 с расширениями gettext

XLIFF дополнен «Руководством по представлению XLIFF 1.2 для Gettext PO» XLIFF 1.2 для поддержки множественного числа.

Состояния перевода

Атрибуту состояния state из XLIFF-файла частично соответствует состояние «На правку» в Weblate (строки в следующих состояниях считаются отмеченными на правку, если перевод на целевой язык уже присутствует в файле: new, needs-translation, needs-adaptation, needs-l10n). Если атрибут state отсутствует, а собственно перевод есть (существует элемент <target>), то строка считается переведённой.

Если строка перевода имеет атрибут approved="yes", она также будет импортирована в Weblate в состоянии «Одобрено», все остальные строки будут импортированы в состоянии «Ожидает рецензирования» (что соответствует спецификации XLIFF).

При сохранении Weblate добавляет эти атрибуты только если они действительно необходимы:

  • Атрибут state добавляется только в том случае, если строка помечена на правку.

  • Атрибут approved добавляется только в том случае, если строка была отрецензирована.

  • В остальных случаях эти атрибуты не добавляются, но если они присутствуют, то они будут обновлятся.

Таким образом, при использовании формата XLIFF настоятельно рекомендуется включить рецензирование в Weblate, чтобы видеть и изменять состояние одобрения строк.

Аналогично, при импорте таких файлов (в форме загрузки) необходимо выбрать пункт Импортировать как переведённое в выпадающем списке Обработка строк, отмеченных «На правку».

Пробелы и переводы строк в файлах XLIFF

Как правило, тип или количество пробельных символов в XML-форматах не различаются. Если вы хотите их сохранить, вы должны добавить к строке флаг xml:space="preserve".

Например:

    <trans-unit id="10" approved="yes">
        <source xml:space="preserve">hello</source>
        <target xml:space="preserve">Hello, world!
</target>
    </trans-unit>

Указание флагов перевода

С помощью атрибута weblate-flags вы можете указать дополнительные флаги перевода (смотрите раздел Настройка поведения с помощью флагов). Также Weblate понимает атрибуты maxwidth и font из спецификации XLIFF:

<trans-unit id="10" maxwidth="100" size-unit="pixel" font="ubuntu;22;bold">
   <source>Hello %s</source>
</trans-unit>
<trans-unit id="20" maxwidth="100" size-unit="char" weblate-flags="c-format">
   <source>Hello %s</source>
</trans-unit>

Из атрибута font извлекается название семейства шрифтов, а также размер и насыщенность шрифта. Приведённый выше пример показывает использование всех трёх параметров, хотя обязательным к указанию является только семейство шрифта. Любые пробельные символы в наименовании семейства шрифта преобразуются в подчёркивания, так что Source Sans Pro становится Source_Sans_Pro, поэтому при указании группы шрифтов (смотрите раздел Управление шрифтами) имейте это в виду.

Ключи строк

В качестве идентификаторов единиц перевода (unit) из XLIFF-файла Weblate использует значение атрибута resname, а если его нет, то id (совместно с тегом file, если есть).

То что именно аттрибут resname используется в качестве идентификатора, а не id вызвано тем, что для resname поддерживаются значения в виде, удобном для человека, что делает из более подходящими для отображения в интерфейсе Weblate. Значение resname должно быть уникальным для всего XLIFF-файла. Это требование Weblate, а не стандарта XLIFF, который не накладывает таких ограничений.

Файлы примеров

Пример XLIFF-файла:

<?xml version='1.0' encoding='UTF-8'?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.1">
    <file>
        <body>
            <trans-unit weblate-flags="c-format, max-length:100">
                <source xml:space="preserve">Hello, world!
</source>
            </trans-unit>
            <trans-unit>
                <source xml:space="preserve">Orangutan has %d banana.
</source>
            </trans-unit>
            <trans-unit>
                <source xml:space="preserve">Try Weblate at &lt;https://demo.weblate.org/&gt;!
</source>
            </trans-unit>
            <trans-unit>
                <source>Thank you for using Weblate.</source>
            </trans-unit>
        </body>
    </file>
</xliff>

Настройка Weblate

Типовые настройки компонента Weblate для двуязычного XLIFF

Маска файла

localizations/*.xliff

Одноязычный базовый файл

Пусто

Шаблон для новых переводов

localizations/en-US.xliff

Формат файла

Файл перевода XLIFF

Типовые настройки компонента Weblate для одноязычного XLIFF

Маска файла

localizations/*.xliff

Одноязычный базовый файл

localizations/en-US.xliff

Шаблон для новых переводов

localizations/en-US.xliff

Формат файла

Файл перевода XLIFF