Souhaitant un site en plusieurs langues (fr,en,es) j’ai développé un snippet appelé L10n (pour localisation) qui pourrait peut être intéresser d’autres personnes ...
Le snippet L10n permet de :
- de changer de langue, via un menu de sélection.
- de construire le menu de sélection de la langue à partir de la liste des langues disponibles
- stocker et retrouver la langue selectionnée par l’utilisateur dans un coockie
- de retourner la langue courante utilisée.
- de retourner le fichier de langue (francais-utf8,spanish-utf8,...) associé à la langue
- de charger la table $_lang associé à un site (sous-ensemble de documents
- de localiser le format des dates & des heures (LC_TIME) selon la langue
- de traduire des labels (équivalent de gettext)
Les paramètres du snippet sont :
l10nPath : permet de changer la localisation du snippet. /assets/snippets/l10n/ par défaut
config : permet de charger un fichier de configuration
css : permet de changer de fichier css. /css/l10n.css par défaut
l10nId : identifiant unique permettant d’identifier un ensemble de pages utilisant le même fichier $_lang
recLn : enregistrement de la langue courante dans un snippet
lnArg : nom de l’argument langue. ’ln’ par défaut
lnPattern : format de l’argument langue. [a-z][a-z] par défaut
setL10n : charge le fichier language et localise les dates
lnDir : permet de changer le répertoire ou se situe le fichier langue
select : construit le menu de sélection de la langue
selectionTpl : permet de changer le template de selection. $l10nPath.’tpl/selection.tpl’ par défaut
getLn : retourne le paramétre langue courant
getLang : retourne le fichier de langue utilisé
text : retourne la traduction du label. (=gettext)
lnNames : initialise la liste des langues possibles. ’fr,es,en’ par défaut
lnFiles : initialise la liste des fichiers langues associés. ’francais-utf8 spanish-utf8 english-utf8’ par défaut
lnLocales : initialise la liste des variables ’locales’ possibles. ’fr-FR es-ES en-UK’ par défaut
N’hésitez pas à regarder le code, l’usage des paramètres y est largement commenté (in english).
Ce qui manque encore ...:
plusieurs type de templates de selection. Exemple désignation d’un drapeau pour le choix de la langue.
Les limites : valables uniquement pour traduire des labels ou de court textes. Evite d’avoir à faire un document Modx par langue. En attendant la version multi-langue de Modx
Utiliser Firefox car j’ai encore des bugs avec IE. Changer la langue du site pour voir les effets sur le menu (wayfinder), la recherche (Ajaxsearch), les galeries (maxigallery), la page de contact (eform), le livre d’or (jot) et les pages du site.
L’installation: le fichier zip joint contient le répertoire l10n à dézipper sous snippets.
Le répertoire assets/snippets/l10n/doc contient différents exemples de documents modx permettant d’appréhender l’usage possible du snippet :
- un fichier readme.txt (ce texte)
- un exemple de template de modèle de page : template_example.html
- un exemple de template maxigallery modifié (cf champ description) : maxigallery_picturetpl_l10n.html
- un exemple de template eform (contactForm) : eform_contactForm_tpl.txt
- une copie d’écran pour un exemple de document modx : screenshot_L10n_document.jpg
- un exemple (très classique) de fichier langage : spanish-utf8.inc.php
Si cela peut être utile à d’autres ...
Je suis aussi preneur de possibles suggestions d’évolutions ou de remarques.