Lingo.dev + XLIFF

Lingo.dev CLI traduce archivos XLIFF (XML Localization Interchange File Format) preservando la estructura del documento, las unidades de traducción y los estados del flujo de trabajo. La CLI es compatible con los formatos XLIFF 1.2 y 2.0, mantiene los metadatos del idioma de origen, preserva las jerarquías de archivo/grupo/unidad, gestiona secciones CDATA para contenido sensible a XML, y se integra con flujos de trabajo de traducción profesional y herramientas CAT.

Configuración rápida

Configuración para archivos XLIFF:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ja"]
  },
  "buckets": {
    "xliff": {
      "include": ["localization/[locale].xliff"]
    }
  }
}

Recordatorio: [locale] es un marcador de posición que debe permanecer literalmente en la configuración, ya que se reemplaza con el locale real durante la ejecución de la CLI.

Traducir archivos XLIFF

npx lingo.dev@latest i18n

Preserva la estructura XLIFF, los estados de traducción y los metadatos del flujo de trabajo de traducción profesional mientras traduce el contenido.

Estructura de archivos XLIFF

Formato 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>

Formato 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>

Generación de claves

Las claves XLIFF se generan de forma determinista con codificación URL:

Claves XLIFF 1.2

  • Basadas en el atributo resname, luego id, luego texto fuente
  • Formato simple: welcome.message, auth.login

Claves XLIFF 2.0

  • Estructura de ruta jerárquica: resources/{fileId}/{groupPath}{unitId}/source
  • Rutas codificadas en URL: resources%2Fmessages%2Fauth%2FgroupUnits%2Flogin%2Fsource
  • Los grupos crean rutas anidadas con el separador groupUnits

Características específicas de XLIFF

Estados de traducción

<!-- Estados de destino en XLIFF 1.2 -->
<target state="new">Contenido sin traducir</target>
<target state="translated">Contenido traducido</target>
<target state="reviewed">Traducción revisada</target>
<target state="final">Traducción final aprobada</target>

Los estados de traducción se conservan y actualizan durante el procesamiento.

Metadatos del idioma de origen

<!-- XLIFF 1.2 -->
<file source-language="en-US" target-language="es-ES">

<!-- XLIFF 2.0 -->
<xliff srcLang="en-US" trgLang="es-ES">

La información del idioma de origen se conserva y actualiza automáticamente.

Secciones CDATA

<source><![CDATA[Contenido con <etiquetas> y caracteres "especiales"]]></source>

Las secciones CDATA se utilizan automáticamente para contenido que contiene caracteres sensibles para XML.

Organización de grupos

<!-- Grupos XLIFF 2.0 para organización lógica -->
<group id="navigation">
  <unit id="home"><segment><source>Home</source></segment></unit>
  <unit id="settings"><segment><source>Settings</source></segment></unit>
</group>

Las estructuras jerárquicas de grupos se conservan y se reflejan en las rutas de claves.

Configuración avanzada

Múltiples archivos XLIFF

"xliff": {
  "include": [
    "localization/app_[locale].xliff",
    "localization/ui_[locale].xliff"
  ]
}

Extensiones de archivo

"xliff": {
  "include": [
    "translations/[locale].xliff",
    "translations/[locale].xlf"
  ]
}

Se admiten tanto las extensiones .xliff como .xlf.

Bloquear unidades de traducción

"xliff": {
  "include": ["localization/[locale].xliff"],
  "lockedKeys": ["app.version", "build.number"]
}

Flujo de trabajo de traducción profesional

Los archivos XLIFF se integran perfectamente con:

  • Herramientas CAT (Traducción Asistida por Computadora)
  • Sistemas de gestión de traducción (TMS)
  • Flujos de trabajo de traductores profesionales
  • Procesos de control de calidad
  • Sistemas de memoria de traducción

La CLI preserva todos los metadatos del flujo de trabajo mientras permite la traducción impulsada por IA para una localización rápida.