Table des matières

Multilinguisme - Gestion des traductions

Pxxo intègre nativement un mécanisme permettant de facilement proposer des widgets en plusieurs langues.

Traduire des libellés

Pour permettre une traduction des libellés produits par un widget on utilise la méthode nommée “_”. Pour des libellés contenus dans la classe PHP du widget, on utilisera classiquement cette méthode en la préfixant par $this, exemple :

$v = $this->_('hello world');

Dans tous les fichiers de ressources (html, javascript, etc…) on utilisera la même méthode au travers du pointeur vers la classe PHP du widget :

echo $Self->_('hello world');

Définir des traductions

Par défaut, on définit l'ensemble des traductions possibles d'un widget dans des fichiers PHP du nom de la langue (éventuellement le pays) qu'ils définissent, exemples :

Ces fichiers doivent se trouver dans un répertoire nommé i18n placé dans le répertoire des thèmes du widget.

Important : Les fichiers de traduction fonctionnent avec les thèmes, on peut donc redéfinir zéro, un, ou plusieurs fichiers de traduction en fonction du thème choisi.

Format des traductions

Le format utilisé est celui du Zend Framework. Les tableaux PHP sont très pratiques et c'est d'ailleurs ce format que l'on rencontre le plus couramment dans le widget pxxo. Voici un exemple d'un fichier fr_FR.php :

$this->TranslateData['Hello World'] = 'Bonjour le monde';

Le format supporté par printf peut être utilisé. Voici un exemple :

$this->TranslateData['There is %d fish in the river'] = 'Il y a %d poissons dans la rivière';

On peut ensuite passer les paramètres attendus lors de la traduction :

$Self->_('There is %d fish in the river', 3);

Connaître la langue courante

La langue courante choisie pour un widget est disponible dans la variable de classe nommée $Lang.

Surcharger les traductions d'un widget

Il est possible de surcharger les traduction d'un widget via le tableau de paramètres depuis la version 5.3 de Pxxo. Voici un exemple : <cpde php>$params['TranslateData']['You nick is %s'] = 'Votre nickname (pseudonyme) est %s';</code>