Convertir un fichier TBX en XLIFF avec une transformation XSLT

Cet article va décrire les étapes à suivre afin d’effectuer une transformation XSLT permettant de passer du format TBX au format XLIFF. Je tiens à préciser que j’ai effectué cette transformation uniquement en guise d’entraînement au XSLT, et que la conversion TBX > XLIFF n’a pas de réel intérêt.

Je me suis inspiré de l’article de Jean-Christophe et j’ai d’ailleurs utilisé la TBX produite avec son article pour cette transformation.

Rappelons la structure d’un fichier XLIFF : un XLIFF est composé un d’une balise <file> qui contient une balise <body> qui contient des balises <trans-unit> qui contiennent des balises <source>, <target>, et éventuellement <note>.

<xsl:stylesheet
	version="1.0"
	xmlns="urn:oasis:names:tc:xliff:document:1.2"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-strict.xsd">

<xsl:output
	method="xml"
	encoding="UTF-8"
	indent="yes"
    />

Ici, on va produire un fichier XML, en encodage UTF-8, et le code sera indenté (c’est-à-dire que les lignes seront en retrait en fonction de leur hiérarchie/emboîtement).

<xsl:template match="/">
	<xliff version="1.2">
		<file>
			<xsl:attribute name="original">
				<xsl:text>bundle.properties</xsl:text>
			</xsl:attribute>
			<xsl:attribute name="source-language">
				<xsl:value-of select="martif/text/body/termEntry/langSet[1]/@xml:lang"/>
			</xsl:attribute>
			<xsl:attribute name="target-language">
				<xsl:value-of select="martif/text/body/termEntry/langSet[2]/@xml:lang"/>
			</xsl:attribute>
			<xsl:attribute name="datatype">
				<xsl:text>xml</xsl:text>
			</xsl:attribute>
			<body>
				<xsl:apply-templates select="martif/text/body/termEntry"/>
			</body>
		</file>
	</xliff>
</xsl:template>

Tout ce qui se trouve entre <xsl:template match= »/ »> et </xsl:template> représente le contenu total du fichier XLIFF qu’on va produire, et qui va remplacer le contenu présent dans la TBX.

Avec la commande <xsl:apply-templates select= »martif/text/body/termEntry »/> on va directement piocher les données des balises <termEntry> de la TBX, qui se trouve elle même dans la balise <body>, qui se trouve dans la balise <text>, dans la balise <martif>.

On rajoute par ailleurs plusieurs attributs à la balise <file>.

<xsl:template match="martif/text/body/termEntry">
	<trans-unit>
		<xsl:attribute name="id">
			<xsl:value-of select="langSet[1]/tig/term"/>
		</xsl:attribute>
		<note xml:lang="en">UI</note>
		<xsl:apply-templates select="langSet[1]"/>
		<xsl:apply-templates select="langSet[2]"/>
	</trans-unit>
</xsl:template>

Ici on vient sélectionner les balises <langSet>. Il est important de préciser le [1] et le [2] pour que les premières et deuxièmes balises soient respectivement sélectionnées.

<xsl:template match="langSet[1]">
	<source>
		<xsl:attribute name="xml:lang">
			<xsl:value-of select="@xml:lang"/>
		</xsl:attribute>
		<xsl:value-of select="tig/term"/>
	</source>
</xsl:template>

<xsl:template match="langSet[2]">
	<target>
		<xsl:attribute name="xml:lang">
			<xsl:value-of select="@xml:lang"/>
		</xsl:attribute>
		<xsl:value-of select="tig/term"/>
	</target>
</xsl:template>

</xsl:stylesheet>

Les balises <langSet> sont transformées en balises <source> et <target>, et le fichier XSLT est complet.

Une fois qu’on a notre fichier XSLT, il faut utiliser le logiciel Okapi Rainbow afin de procéder à la conversion. Vous pouvez le télécharger gratuitement à partir de ce lien : https://okapiframework.org/binaries/main/

Une fois Rainbow ouvert, ajouter le fichier à convertir à partir de menu « Input > Add Documents… » ou à partir de la petite croix verte juste en dessous.

Une fois le fichier source chargé dans le logiciel, allez dans le menu « Utilities > XML Utilities > XSL Transformation… », insérez le chemin de votre fichier XSLT dans le champ « Path of the XSLT template to apply: » et cliquez sur le bouton « Execute ».

S’il n’y a aucune erreur, votre fichier XLIFF sera généré.

Laisser un commentaire

Concevoir un site comme celui-ci avec WordPress.com
Commencer