Cet article est une introduction succincte aux règles du format Internationalization Tag Set (ITS) [1] et à leur utilité au sein de la traduction. Il a été co-écrit par Ismaël et moi-même.
Introduction
L'Internationalisation Tag Set (ITS) définit des catégories de données et leur implémentation sous forme d'éléments et d'attributs, et il est conçu pour être utilisé en combinaison avec des schémas [2] afin de prendre en charge l'internationalisation et la localisation de documents.
Afin de présenter les règles ITS que nous venons de découvrir, il convient en premier lieu de présenter le standard Extensible Markup Language (ou XML) [3] : un standard de définition de règles d'écriture de balises. Ce standard est à la base des formats TMX, XLIFF, SRX ou TBX qui sont couramment utilisés dans le monde de la traduction, mais également à la base des formats ODF ou DOCX qui sont utilisés dans les documents que nous avons à traduire.
1. Définition de notions élémentaires
Un élément (aussi appelé balise), ou “tag” en anglais, est utilisé pour formater du texte, structurer et hiérarchiser des données, mais également peut décrire des commandes, etc.
Un attribut est une sous-partie d'un élément qui sert à en préciser les caractéristiques. Le format XML définit une liste de règles d’écriture d'éléments et d'attributs pour garantir la compatibilité entre les formats et la possibilité de facilement travailler avec des formats différents.
ITS est un ensemble de règles (écrites sous forme de balises XML) qui servent à traiter les contenus d'un fichier donné. Ces règles permettent entre autres d'identifier les parties à traduire, les parties à ne pas traduire, les parties à considérer comme des « paragraphes », les parties à considérer comme des éléments de paragraphes, etc.
Un ensemble de règles ITS peut être appliqué à tout fichier à traduire. Pour appliquer les règles ITS à un document, il faut utiliser un mécanisme qui convertit ce document en fichier à traduire en fonction des règles ITS définies. Nous utiliserons ici le logiciel Rainbow de l’Okapi Framework [4].
Les fichiers utilisés ici ont été créés par Jean-Christophe Helary (notre tuteur de stage) pour utilisation lors d'une présentation du standard ITS à la Open Source Conference Tokyo en 2016.
2. Fichier XML arbitraire
Nous allons travailler ici à une conversion en XLIFF comme on peut en trouver dans le monde de la localisation. Le fichier que nous utilisons est un fichier XML arbitraire :
<?xml version="1.0"?>
<doc>
<p pid="p1">剣道はすごく<b>楽しい</b>。<img src="写真.png" alt="稽古中"/></p>
<p pid="p2">この写真は、「獅剣会」の仲間が稽古している姿を写っています。「獅剣会」
は<b>「しけんかい」</b>とよみます。
<br/><b>なぜでしょう。</b>
<reviewNote author="エラリー">本当に知りたい?</reviewNote>
<br/>いろんな説があります。まず、獅剣会の構成メンバーは香西辺りで<i>獅子舞い</i>を
やって、<i>剣道</i>もやっています。だから「獅・剣」の会。
<br/>もう一つの説はあります。実はこの会を考えた人は<b>四軒屋</b>さんといいます。
だから<i>「四軒屋さんの会」</i>という考え方もあります。
</p>
<p>さて、ここからは、この間の三豊近県の試合についてのお話します。その試合は一本勝負
です。相手は「竹輪会」の柳さんでした。6段のばりばり強い人です。長く持たないだろ
と思ったんですが、意外と長く感じました。</p>
<soundtrack>
審判: はじめ!
柳さん: や~
私も: や~
しばらくしたら: (竹刀の音)ガチャガチャガチャガチャ
柳さん: や~
私も: や~
(もう30秒たったので負けても恥ずかしくない…
と思ったら、柳さんの素早い足さばきで…)
柳さん: め~ん
私は:(あらら~)
審判: 面あり!勝負あり!
</soundtrack>
<p>という訳で、余計なことを考えていなければ、もう少し長く持ったかも!</p>
</doc>
3. Fichier ITS
Le fichier ITS permet de fixer des règles, et nous allons détailler dans les parties suivantes qu’elle en est le contenu :
<?xml version="1.0" encoding="UTF-8" standalone="no"?><its:rules xmlns:its="http://www.w3.org/2005/11/its" xmlns:itsx="http://www.w3.org/2008/12/its-extensions" xmlns:okp="okapi-framework:xmlfilter-options" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0">
<!-- See ITS specification at: http://www.w3.org/TR/its/ -->
<its:translateRule selector="//*/@alt" translate="yes"/>
<its:withinTextRule selector="//img|//b|//i|//reviewNote" withinText="yes"/>
<its:translateRule itsx:whiteSpaces="preserve" selector="//soundtrack" translate="yes"/>
<its:translateRule selector="//reviewNote" translate="no"/>
</its:rules>
4. Explication de l'en-tête
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<its:rules xmlns:its="http://www.w3.org/2005/11/its" xmlns:itsx="http://www.w3.org/2008/12/its-extensions" xmlns:okp="okapi-framework:xmlfilter-options" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0">
L'en-tête confirme qu'ITS est bien défini selon XML version 1.0 et que le fichier est encodé en UTF-8. On y voit également les références explicites au standard ITS et dans notre cas à des options du Okapi Framework.
5. Les quatre règles ITS
Voici les quatre règles que propose le document ITS que nous avons décidé d’analyser et d'étudier.
• “<its:translateRule selector="//*/@alt" translate="yes"/>”
Le sélecteur (“selector”) se révèle très important ici. Il spécifie les objets sur lesquels la règle ‘translate=”yes”’ va s’appliquer. Ici, il s’agit de tous les attributs qui s’appellent “alt” de tous les éléments du document. Par défaut, tout élément est considéré comme devant être traduit au contraire des attributs d'un élément : c’est à l’utilisateur donc d’indiquer si c’est le cas ou non.
• <its:withinTextRule selector="//img|//b|//i|//reviewNote" withinText="yes"/>
Ici, le sélecteur spécifie que tous les éléments définis dans sa liste (“img”, “b”, “i”, “reviewNote”) se verront appliquer la règle “withinTextRule=”yes”” [6]. Cette règle définit les éléments qui font partie d’un texte encadré par un élément supérieur. Ces parties ne sont donc pas considérées comme des « paragraphes », mais comme par exemple des éléments de formatage à l'intérieur d'un « paragraphe » (gras, italique, etc).
• <its:translateRule itsx:whiteSpaces="preserve" selector="//soundtrack" translate="yes"/>
“itsx:whiteSpaces” a été implémenté par le Okapi Framework avant la sortie d'ITS 2.0 [7] et indique comment les espaces blancs doivent être traités dans le contenu avec deux valeurs possibles : "default" (qui considère comme XML que les espaces sont non significatifs) et "preserve" qui permet de conserver ces espaces blancs pour la traduction.
• <its:translateRule selector="//reviewNote" translate="no"/>
En opposition avec la première règle, l'élément “//reviewNote” est défini comme n’étant pas à traduire.
6. Mise en application
Nous allons maintenant utiliser la définition ITS dans Rainbow pour convertir ce fichier XML arbitraire en fichier XLIFF.
Nous devons d’abord télécharger Rainbow par ce lien :
On lance Rainbow, qui se présente comme suit :
On ajoute le document XML à traduire dans Input List (à l’aide du petit plus) :
On spécifie les langues source/cible du document
On clique sur le nom du filtre et on en crée un nouveau avec nos règles ITS :
On choisit “Translation Kit Creation” ;
On choisit Projet OmegaT, puis on appuie sur “Execute” :
Il convient désormais de lancer le projet obtenu dans OmegaT. Traduisez un ou deux segments et enregistrez votre progression. Créez maintenant les fichiers cibles et rouvrez votre logiciel Rainbow. Remplacez le fichier XML par le “manifest” qui se trouve dans notre projet OmegaT. Pour finir, on choisit “Translation kit postprocessing” et on appuie de nouveau sur “Execute” :
Voilà, le fichier traduit apparaît dans le dossier “out” du projet OmegaT. Bravo, on peut s’applaudir !
7. Conclusion
L’analyse de chacune de ces balises à travers un fichier XML au format ITS permet de mieux comprendre comment on peut créer soi-même des filtres de conversion XLIFF pour fichiers XML arbitraires, pour traduction, éventuellement dans OmegaT.
Nous vous remercions de votre lecture. N’hésitez pas à poster un commentaire juste en-dessous si vous avez une remarque sur cet article.
Sources
[1] https://www.w3.org/TR/2007/REC-its-20070403/
La version 2.0 d'ITS se focalise sur HTML et les formats XML en général : https://www.w3.org/TR/its20/
[2] https://fr.wikipedia.org/wiki/XML_Schema
[3] https://fr.wikipedia.org/wiki/Extensible_Markup_Language
[4] https://www.w3.org/TR/2007/REC-its-20070403/#basic-concepts-selection
[5] https://www.w3.org/TR/2007/REC-its-20070403/#trans-datacat
[6] https://www.w3.org/TR/2007/REC-its-20070403/#elements-within-text
[7] http://okapiframework.org/wiki/index.php?title=XML_Filter#whiteSpaces
Merci à M. Jean-Christophe Helary, notre tuteur de stage, pour avoir corrigé cet article !