Lingo.dev + XLIFF

Lingo.dev CLI traduit les fichiers XLIFF (XML Localization Interchange File Format) tout en préservant la structure du document, les unités de traduction et les états de flux de travail. Le CLI prend en charge les formats XLIFF 1.2 et 2.0, maintient les métadonnées de la langue source, préserve les hiérarchies fichier/groupe/unité, gère les sections CDATA pour le contenu sensible au XML, et s'intègre avec les flux de travail de traduction professionnels et les outils de TAO.

Configuration rapide

Configuration pour les fichiers XLIFF :

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

Rappel : [locale] est un placeholder qui doit rester littéralement dans la configuration, car il est remplacé par la locale réelle lors de l'exécution du CLI.

Traduire des fichiers XLIFF

npx lingo.dev@latest i18n

Préserve la structure XLIFF, les états de traduction et les métadonnées de flux de travail de traduction professionnelle tout en traduisant le contenu.

Structure des fichiers XLIFF

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

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

Génération de clés

Les clés XLIFF sont générées de manière déterministe avec encodage URL :

Clés XLIFF 1.2

  • Basées sur l'attribut resname, puis id, puis le texte source
  • Format simple : welcome.message, auth.login

Clés XLIFF 2.0

  • Structure de chemin hiérarchique : resources/{fileId}/{groupPath}{unitId}/source
  • Chemins encodés en URL : resources%2Fmessages%2Fauth%2FgroupUnits%2Flogin%2Fsource
  • Les groupes créent des chemins imbriqués avec le séparateur groupUnits

Fonctionnalités spécifiques à XLIFF

États de traduction

<!-- États cibles XLIFF 1.2 -->
<target state="new">Contenu non traduit</target>
<target state="translated">Contenu traduit</target>
<target state="reviewed">Traduction révisée</target>
<target state="final">Traduction finale approuvée</target>

Les états de traduction sont préservés et mis à jour pendant le traitement.

Métadonnées de langue source

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

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

Les informations de langue source sont automatiquement préservées et mises à jour.

Sections CDATA

<source><![CDATA[Contenu avec <balises> & caractères "spéciaux"]]></source>

Les sections CDATA sont utilisées automatiquement pour le contenu contenant des caractères sensibles au XML.

Organisation des groupes

<!-- Groupes XLIFF 2.0 pour l'organisation logique -->
<group id="navigation">
  <unit id="home"><segment><source>Home</source></segment></unit>
  <unit id="settings"><segment><source>Settings</source></segment></unit>
</group>

Les structures hiérarchiques des groupes sont préservées et reflétées dans les chemins de clés.

Configuration avancée

Fichiers XLIFF multiples

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

Extensions de fichiers

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

Les extensions .xliff et .xlf sont toutes deux prises en charge.

Verrouiller les unités de traduction

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

Flux de travail de traduction professionnelle

Les fichiers XLIFF s'intègrent parfaitement avec :

  • Les outils de TAO (Traduction Assistée par Ordinateur)
  • Les systèmes de gestion de traduction (TMS)
  • Les flux de travail des traducteurs professionnels
  • Les processus d'assurance qualité
  • Les systèmes de mémoire de traduction

La CLI préserve toutes les métadonnées du flux de travail tout en permettant la traduction assistée par IA pour une localisation rapide.