Categories
Uncategorized

Internationalisation

La gestion des textes en pludieurs langues par un plugin est tout à fait similaire à celle existant dans le noyau.

Il suffit de fournir un sous-répertoire lang/ dans lequel on place des fichiers de traduction comme chose_fr.php, chose_en.php, etc.

Ces fichiers rajoutent au tableau global de nom $GLOBALS['idx_lang'] les chaînes traduites indicées par le mnémonique de traduction. Par exemple, le plugin crayons fournit une traduction allemande dans le fichier lang/crayons_de.php ainsi :

Important : on voit ici que $GLOBALS['idx_lang'] est bien le nom de la globale et non pas la globale elle-même.

On utilise ensuite ces chaines traduites en les préfixant par le nom du fichier langue.

Dans les squelettes : <:chose:mnemonique:>, par exemple ici <:crayons:annuler:>

Dans le PHP en utilisant la fonction _T() comme _T("chose:mnemonique")

Les mnémoniques avec des, anthony morrison scam @param@ sont des chaines paramétrées. Elles permettent d’incorporer des valeurs variables dans la traduction. Par exemple, la 2ème ligne de l’exemple tiré de crayons s’utilise en fournissant 2 variables comme arguments supplémentaires à _T() : _T("crayons:editer_@type@_@id@, $type, $id). Si type vaut “article” et id 17, on obtiendra : “article 17 voll ändern”

Il est impératif d’utiliser dans les traductions des entités html ou numérique pour les caractères accentués, comme ici &auml ; pour ä.
A titre de curiosité, la première chaîne en arabe devient :
’annuler’ => ’&#1573 ;&#1604 ;&#1594 ;&#1575 ;&#1569 ;’
qui donne 'annuler' => 'إلغاء'

Si la traduction n’existe pas, le mnémonique outdoor garden fountain sera utilisé, les tirets bas (underscore) étant remplacés par des espaces.

A noter que le nom du fichier de traduction qui fournit le préfixe précédant les deux-points est en fait indépendant du nom du plugin. On peut même fournir plusieurs fichiers de préfixes différents pour un même plugin.

Leave a Reply