Lingo.dev + XLIFF
Lingo.dev CLI переводит файлы XLIFF (XML Localization Interchange File Format), сохраняя структуру документа, единицы перевода и состояния рабочего процесса. CLI поддерживает форматы XLIFF 1.2 и 2.0, сохраняет метаданные исходного языка, иерархию файлов/групп/единиц, обрабатывает секции CDATA для XML-чувствительного контента и интегрируется с профессиональными переводческими процессами и CAT-инструментами.
Быстрая настройка
Настройка для файлов XLIFF:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"xliff": {
"include": ["localization/[locale].xliff"]
}
}
}
Напоминание: [locale]
— это плейсхолдер, который должен оставаться в конфигурации буквально, так как он заменяется на фактический язык во время выполнения CLI.
Перевод файлов XLIFF
npx lingo.dev@latest i18n
Сохраняет структуру XLIFF, состояния перевода и метаданные профессионального рабочего процесса перевода при переводе контента.
Структура файла XLIFF
Формат XLIFF 1.2
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file original="app.strings" source-language="en" target-language="es" datatype="plaintext">
<header></header>
<body>
<trans-unit id="welcome" resname="welcome.message">
<source>Welcome to our application</source>
<target state="translated">Bienvenido a nuestra aplicación</target>
</trans-unit>
<trans-unit id="login" resname="auth.login">
<source>Log In</source>
<target state="new"></target>
</trans-unit>
</body>
</file>
</xliff>
Формат XLIFF 2.0
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0" srcLang="en">
<file id="messages">
<unit id="welcome">
<segment>
<source>Welcome to our application</source>
</segment>
</unit>
<group id="auth">
<unit id="login">
<segment>
<source>Log In</source>
</segment>
</unit>
</group>
</file>
</xliff>
Генерация ключей
Ключи XLIFF генерируются детерминированно с использованием URL-кодирования:
Ключи XLIFF 1.2
- Основаны на атрибуте
resname
, затемid
, затем исходном тексте - Простой формат:
welcome.message
,auth.login
Ключи XLIFF 2.0
- Иерархическая структура пути:
resources/{fileId}/{groupPath}{unitId}/source
- URL-кодированные пути:
resources%2Fmessages%2Fauth%2FgroupUnits%2Flogin%2Fsource
- Группы создают вложенные пути с разделителем
groupUnits
Особенности XLIFF
Состояния перевода
<!-- Состояния target в XLIFF 1.2 -->
<target state="new">Непереведённый контент</target>
<target state="translated">Переведённый контент</target>
<target state="reviewed">Проверенный перевод</target>
<target state="final">Окончательно утверждённый перевод</target>
Состояния перевода сохраняются и обновляются в процессе обработки.
Метаданные исходного языка
<!-- XLIFF 1.2 -->
<file source-language="en-US" target-language="es-ES">
<!-- XLIFF 2.0 -->
<xliff srcLang="en-US" trgLang="es-ES">
Информация об исходном языке автоматически сохраняется и обновляется.
Секции CDATA
<source><![CDATA[Контент с <tags> и "специальными" символами]]></source>
Секции CDATA используются автоматически для контента, содержащего символы, чувствительные к XML.
Организация групп
<!-- Группы XLIFF 2.0 для логической организации -->
<group id="navigation">
<unit id="home"><segment><source>Home</source></segment></unit>
<unit id="settings"><segment><source>Settings</source></segment></unit>
</group>
Иерархические структуры групп сохраняются и отражаются в путях ключей.
Расширенная конфигурация
Несколько файлов XLIFF
"xliff": {
"include": [
"localization/app_[locale].xliff",
"localization/ui_[locale].xliff"
]
}
Расширения файлов
"xliff": {
"include": [
"translations/[locale].xliff",
"translations/[locale].xlf"
]
}
Поддерживаются как расширения .xliff
, так и .xlf
.
Блокировка единиц перевода
"xliff": {
"include": ["localization/[locale].xliff"],
"lockedKeys": ["app.version", "build.number"]
}
Профессиональный рабочий процесс перевода
Файлы XLIFF легко интегрируются с:
- CAT (инструментами автоматизированного перевода)
- Системами управления переводами (TMS)
- Рабочими процессами профессиональных переводчиков
- Процессами обеспечения качества
- Системами памяти переводов
CLI сохраняет все метаданные рабочего процесса, обеспечивая при этом перевод с поддержкой ИИ для быстрой локализации.