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.