Bonjour à tous,
Je suis actuellement en train de développer une application modulaire multi-language en php. J'utilise gettext pour gérer plusieurs langues.
Chaque module de mon application possède son propre répertoire "Langs", et la base de l'application se charge de faire le lien en fonction du module demandé.
Voici ce que fait l'application concernant gettext:
- Une fois pour toute pour l'application entière :
- Lors de l'affichage d'un module :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 //$_SESSION['lang'] vaut "fr_FR" ou "en_GB" putenv("LANGUAGE=".$_SESSION['lang']); putenv("LANG=".$_SESSION['lang']); putenv("LC_ALL=".$_SESSION['lang']); setlocale(LC_ALL,$_SESSION['lang']); $domain = 'messages'; //ROOT est la racine de l'application. bindtextdomain($domain, ROOT."/Langs"); textdomain($domain);
Ensuite je revient au répertoire de langue global pour afficher la fin de la page.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $domain = 'messages'; //$this->App_path est le chemin du module bindtextdomain($domain, $this->App_path."/Langs"); textdomain($domain); Affichage()
Il y a une chose que je ne comprends pas, c'est que cela fonctionne très bien pour un module très simple, mais dés que l'on passe sur des modules un peu plus complexes, cela ne fonctionne plus. C'est étrange car le code qui s'occupe du chargement et de l'affichage des modules est le même pour tous.
C'est la première fois que j'utilise gettext dans une application, peut être y a t il une meilleure façon de faire?
Est ce qu'il est possible d'avoir des messages de debug concernant gettext, pourquoi il ne trouve pas les traductions, où est ce qu'il cherche les fichiers .mo, etc.
Merci beaucoup pour votre aide.
Rémi
Partager