11.Fichier de traduction TMX (Translation Memory eXchange)

11.1.Introduction

La norme TMX (Translation Memory eXchange) décrit un format de fichier basé sur le standard XML. TMX est tout particulièrement destiné à fournir des traductions de phrases dans différentes langues.
L'avantage de ce format:
  • Il s'agit de fichiers humainement lisibles (et donc aisément éditables).
  • Le suivi des versions (notamment via un outil de gestion de configuration) est aisée puisqu'il s'agit de fichiers humainement lisibles et que l'on peut faire en sorte de n'avoir qu'une traduction par ligne (et donc rendre le diff lisible).
  • Il est possible de détecter aisément l'absence d'une traduction dans une langue donnée pour une phrase donnée (ne serait-ce que par une transformation XSL).
L'inconvénient que l'on peut y trouver:
  • Le fichier peut rapidement être volumineux puisque pour chaque phrase on doit trouver la traduction dans les différentes langues supportées.
Ce format libre est géré par LISA (Localization Industry Standards Association) dont le site (en anglais) est disponible à l'adresse [LISA TMX].

11.2.Structure d'un fichier TMX

Le fichier TMX le plus simple (i.e. ne contenant que les champs obligatoires et un exemple à minima) ressemble à:
<?xml version="1.0" ?>
<tmx version="1.4">
    <!-- segtype: block, paragraph, sentence, phrase -->
    <!-- adminlang: note and prop -->
    <!-- datatype: html, plaintext, xml, etc. -->
    <header creationtool="eclipse"
            creationtoolversion="3.4" 
            segtype="sentence" 
            o-tmf="n/a"
            adminlang="fr-FR"
            scrlang="fr-FR"
            datatype="plaintext">
    </header>
    <body>
        <tu tuid="bonjour">
            <tuv xml:lang="en">
                <seg>hello</seg>
            </tuv>
            <tuv xml:lang="fr">
                <seg>bonjour</seg>
            </tuv>
        </tu>
    </body>
</tmx>
Il s'agit bien d'un fichier XML (encodé par défaut en UTF-8). La balise racine est une balise tmx, il est recommandé de préciser la version de la norme utilisée (par défaut, il s'agit de la dernière. C'est à dire 1.4 à ce jour). La balise tmx doit obligatoirement contenir un bloc header et body (dans cet ordre).
Pour la balise header il faut obligatoirement renseigner les attributs suivants:
  • creationtool précisant le nom de l'outil ayant servi à la génération du fichier (REM: Ici, il ne s'agit pas d'une génération automatique, nous avons donc simplement précisé le nom de l'éditeur).
  • creationtoolversion précisant la version de l'outil cité précédemment.
  • segtype précisant le type par défaut des éléments traduits. Ce champ peut prendre les valeurs "block", "paragraph", "sentence" ou "phrase". Il peut être modifié (surchargé) pour une traduction donnée. A titre de démonstration, nous nous contenterons du type "sentence" (autrement dit une phrase).
  • o-tmf précisant le format du fichier à partir duquel ce fichier TMX a été créé (pour nous, il ne s'applique pas).
  • adminlang précisant la langue utilisée dans les commentaires associés à ce fichier. La langue doit être précisé selon la norme ISO.
  • srclang précisant la langue utilisée pour la référence des phrases traduites. La langue doit être précisé selon la norme ISO.
  • datatype précisant le type des chaînes traduites. Ce peut être (liste non exhaustive) html, plaintext, xml, etc. A titre de démonstration, nous nous contenterons du type "plaintext" (autrement dit texte pur).
Le bloc body contient une liste de blocs tu.
Chaque bloc tu contient un attribut tuid identifiant unique (au sein du fichier) de la phrase traduite. Cet identifiant est la clé de traduction qui permettra de retrouver la traduction dans une langue donnée. Ce bloc tu contient une liste de blocs tuv.
Chaque bloc tuv contient un attribut xml:lang indiquant la langue (format ISO) de traduction. Ce bloc tuv contient un bloc seg.
Chaque bloc seg contient la phrase traduite.