Как устроен файл XLIFF
Файл XLIFF это XML. Внутри он содержит секции trans-unit, и каждая секция описывает одну строку для перевода. В ней хранятся исходный текст, перевод, контекст, метаданные и ссылка на место, где строка используется в исходнике.
<trans-unit id="button.save">
<source>Save changes</source>
<target>Сохранить изменения</target>
<note>Кнопка в нижней части панели</note>
</trans-unit>
Каждый trans-unit это независимый сегмент. Переводчик работает с сегментами, а не с целым файлом. Это позволяет распределить работу, отслеживать прогресс по строкам и возвращать результат на исходные позиции.
Зачем нужен XLIFF
Основная причина: XLIFF даёт однозначный контракт между сторонами. Разработчик знает, где каждая строка находится в коде. Переводчик знает, что переводить и в каком контексте. CAT-система знает, какие строки новые, какие изменённые и какие уже переведены ранее.
Без XLIFF передача строк идёт через таблицы, документы или ручное копирование. Каждый способ вносит потери: строки теряют привязку к коду, контекст исчезает, дубли не распознаются.
Что хранит XLIFF
Помимо исходного текста и перевода, в файле могут быть:
| Поле | Что хранит |
|---|---|
| source | Исходная строка |
| target | Перевод |
| id | Идентификатор строки |
| context | Где строка используется |
| note | Примечание переводчику |
| state | Статус: новый, переведён, утверждён |
| approved | Флаг утверждения |
| tool-state | Состояние в CAT-системе |
Контекст и note особенно важны. Они объясняют, где строка появляется и как на неё влияет окружение. Например, что это заголовок и нужен определённый регистр, или что это часть предложения и нужна определённая форма слова.
Как XLIFF работает в процессе локализации ПО
Типичный сценарий. Разработчик выгружает строки интерфейса в XLIFF. CAT-система или Платформа перевода подгружает файл, сопоставляет строки с памятью переводов и глоссарием. Перевод выполняется сегментно. Перевод проходит агентские проверки. Готовые строки возвращаются в XLIFF и передаются обратно в репозиторий.
Для локализации ПО XLIFF это стандарт обмена. Он поддерживает большинство форматов строк: простые тексты, строки с подстановкой переменных, HTML-разметку внутри строк, многоязычные таблицы.
Ограничения XLIFF
XLIFF не идеален. Файл XML, значит его можно сломать, если менять вручную. Разметка внутри строк требует осторожности: если переводчик поменяет порядок тегов, строка может не отобразиться. Для больших проектов файл становится тяжёлым, и CAT-системам приходится делать инкрементальные загрузки, чтобы не пересылать весь файл каждый раз.
Варианты стандарта, XLIFF 1.2 и 2.0, имеют различия в структуре. Большинство CAT-систем поддерживают оба, но при обмене файлами между инструментами стоит убедиться, что версии совместимы.
FAQ
Что такое XLIFF?
XLIFF это XML-формат для передачи строк локализации между системами. Он описывает, какие строки переводить, где они находятся и куда вставить результат.
Зачем нужен XLIFF, если можно просто передать текстовый файл?
XLIFF сохраняет привязку строк к коду, контекст, метаданные и статус перевода. Без этого передача строк теряет структуру, дубли не распознаются и процесс деградирует.
Чем XLIFF 1.2 отличается от 2.0?
Основное различие в структуре XML. Версия 2.0 добавляет поддержку инлайн-разметки и более гибкую модель строк. Большинство CAT-систем поддерживают оба варианта, но при обмене файлами стоит проверить совместимость.
Можно ли редактировать XLIFF вручную?
Технически да, но не рекомендуется. Файл XML, и ручное редактирование легко ломает структуру. Лучше использовать CAT-систему или Платформу перевода, которая работает с XLIFF корректно.
Что такое trans-unit в XLIFF?
Trans-unit это основная единица файла. Каждая секция описывает одну строку для перевода: исходный текст, перевод, контекст, метаданные и статус.