XLIFF 1.1 и 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 с расширениями Apple

XLIFF, расширенный Apple для поддержки множественного числа.

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

Атрибуту состояния 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, поэтому при указании группы шрифтов (смотрите раздел Управление шрифтами) имейте это в виду.

Ключи строк

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

Атрибут resname должен быть понятным человеку идентификатором единицы, что делает его более подходящим для отображения в Weblate вместо id. 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>
Поддерживаемые функции

Расширения файлов

.sdlxliff, .xlf, .xliff

Языковость

Как одноязычный, так и двуязычный

Поддерживает множественное число

Yes

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

Yes

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

No

Поддерживает контекст

Yes

Поддерживает расположение

Yes

Поддерживает флаги

Yes

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

Одобрено, Требует правки

Идентификатор API

apple-xliff, plainxliff, poxliff, xliff

Поддерживает строки только для чтения

Yes

Настройка Weblate

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

Маска файла

localizations/*.xliff

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

Пусто

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

localizations/en-US.xliff

Формат файла

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

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

Маска файла

localizations/*.xliff

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

localizations/en-US.xliff

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

localizations/en-US.xliff

Формат файла

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