17 mars 2003

Comment gérer plusieurs langues en XSL ?

Biensûr il existe plusieurs méthodes pour répondre à cette question. Pour en avoir tester plusieurs, je vais vous présenter celle qui me semble la plus élégente.

Tout d'abord, nous allons isoler dans un fichier tous les termes devant être traduits. Nous appellerons ce fichier "messages.xml"

<?xml version="1.0" encoding="ISO-8859-1"?>
<messages>
     <message name="a" xml:lang="fr">Bonjour</message>
     <message name="a" xml:lang="en">Hello</message>
</messages>

Ensuite il nous faut déclarer le fichier contenant les traductions:

<xsl:variable name="messages" select="document('messages.xml')/messages"/>

Il faut, également, déclarer un template permettant d'utiliser le fichier de termes.

<xsl:param name="lang">fr</xsl:param>

<xsl:template match="message">
     <xsl:if test="lang($lang)">
          <xsl:value-of select="."/>
     </xsl:if>
</xsl:template>

Enfin il ne reste plus qu'à remplacer chaque terme par un appel au template précédent pour avoir une feuille XSL multi-langue.

<xsl:apply-templates select="$messages/message[@name='a']"/>

Aucun commentaire:

Enregistrer un commentaire