Imprimer

Compatibilité Joomla!joomla! 1.5joomla! 1.6

Si vous cherchez à développer des extensions Joomla pour un site multilingue vous aurez besoin de la fonction JText issue de l'API Joomla!.  Grâce à cette fonction on peut ajouter des termes traduisibles dans plusieurs langues que l'on inclut directement dans le code PHP mais aussi Javascript.

Définition de la chaine de texte

On commence par traduire le terme dans le fichier INI de l'extension. Côté visiteur on trouvera les fichiers de langue dans le dossier

[SITE]/language/[TAG]/TAG.EXTENSION.ini

Exemple avec le module login en anglais :

[SITE]/language/en-GB/en-GB.mod_login.ini

 

On ajoute le terme à traduire dans le fichier ini :

KEY = "Ma clé"

 

Côté administrator on trouvera les fichiers de langue dans

[SITE]/administrator/language/[TAG]/TAG.EXTENSION.ini

 

Ajout du terme avec JText en PHP

En PHP c'est très simple, on ajoute la fonction JText :

<?php echo JText::_('KEY'); ?>

Le terme qui s'affichera à l'écran sera 'Ma clé' si la traduction est trouvée dans le fichier de langue.

 

Ajout du terme avec JText en Javascript

Pou insérer un texte traduit dans une chaine javascript on peut procéder de deux manières :

 

Ajout d'une déclaration javascript

Dans la feuille PHP on peut ajouter des lignes de code Javascript grâce à la fonction addScriptDeclaration issue de l'API Joomla.

$doc = JFactory::getDocument();         
$doc ->addScriptDeclaration('var MonTexte=\''.JText::_('KEY',true).'\';');


On injecte donc une ligne de code Javascript dans l'entête de la page de Joomla où on retrouvera le résultat du JText :

var MonTexte=Ma clé

 

On peut renseigner l'attribut TRUE qui permet d'échaper les apostrophes. Admettons que vous avez une traduction qui comporte des ' , vous aurez une erreur javascript. Merci à Christophe Avonture le papa de AllEvents pour l'info.

Sans le paramètre TRUE votre code renverra

var MonTexte=\'Il était une fois dans l'ouest\';

alors qu'avec le paramètre TRUE on obtient

var MonTexte=\'Il était une fois dans l\'ouest\';

 

Utilisation dans un fichier externe

Imaginons que l'on ait un fichier Javascript de plusieurs centaines de ligne que l'on appelle dans la page. Il n'est pas envisageable de faire comme précédemment pour ajouter des traductions dans le code. Il existe donc une extension de JText qui permet de définir une variable traduite et de la stocker dans le script.

Dans votre page PHP vous devez d'abord déclarer la variable à stocker :

JText::script('KEY');

Cette fonction va récupérer la traduction de KEY et la stocker en javascript dans la page. On peut ensuite l'appeler à partir de notre fichier :

alert(Joomla.JText._('KEY', 'Texte par défaut');

Le deuxième paramètre est le texte par défaut qui sera utilisé si aucune traduction n'est trouvée par le système.

 

Voilà, on a fait le tour de la fonction JText, vous n'avez plus d'excuses pour ajouter les traductions pour le multilingue à vos extensions et sites Joomla.