Je viens ici non pas pour déposer un problème que j'ai rencontré mais plutôt une solution avec détails et pour lequel j'ai perdu beaucoup de temps. Je pense que cela peut servir. J'avais consulté de nombreux forums, celui-ci, ceux d'apache etc.. des documentations. Mais sans rien trouver.
La solution à mon problème -------- Utiliser wamp 2.2e en 32bits
-------------- Problème rencontré avec l'affichage des langues via gettext.
Ma machine : Windows 7 64bits VC10 SP1 vcredist_x64.exe 64 bits installé Wamp 2.2 64 bits ou Wamp 2.2e 64 bits
Mon code fonctionnait en production sur mon hébergement mutualisé chez infomaniak. Les traductions s'affichaient sans problème. Mon code était donc bon. Les po et mo aussi.
J'avais aussi pris garde d'utiliser les language string de windows en initialisant les variables d'environnement et du setlocale adaptés à Windows pour les languages fr_FR (fra sous windows) et en_US (us sous windows). Ma page retournait bien les valeurs gettext de ma page en fr_FR (fra) mais ne fonctionnait pas en en_US (us).
Mon code de test : <?php // Page index_en.php /* Structure des fichiers ./index_fr.php ./index_en.php ./locale/fr_FR/LC_MESSAGES/fr.po ./locale/fr_FR/LC_MESSAGES/fr.mo ./locale/en_US/LC_MESSAGES/en.po ./locale/en_US/LC_MESSAGES/en.mo */
var_dump($aCfg); // un petit debug ne fait pas de mal
// _( "test PO" ) devrait me retourner "test PO in english" // mais me retourne "test PO" // donc il y a un problème ?>
De plus $aCfg["setlocale_result"] me retournait bien : English_United States.1252 et non false. La langue us était donc prise en charge sur mon PC. gettext, lui, me retournait la clé fournie dans le php, non traduite (en français j'avais mis une autre valeur pour cette clé)
En testant ce même code sur une version de windows7 en 32 bits, donc wamp 2.2e 32 bits ça fonctionnait de suite ! (extension php gettext activée bien sûr)
-------------------------------- Recommandations pour utiliser gettext sous windows / wamp ----- Voici ce que j'en déduit pour que gettext fonctionne correctement sous windows avec wamp 2.2e 32bits: - extension php gettext activée - poedit par exemple pour gérer po et compiler les mo - faire attention à setlocale : adapter à l’environnement windows ( voir les valeurs de langage : [msdn.microsoft.com] ) - penser à redémarrer les serveurs wamp à chaque mise à jour des po/mo (je n'ai pas trouvé comment mettre en place apache en mode mpm prefork pour éviter ces problèmes de cache) (((
Voilà peut être que cela va éviter de longues recherches à certains. En tout cas voici une solution au problème que j'ai rencontré. Maintenant, il y a peut être d'autres solutions ne nécessitant pas de changer de version.
Si vous voyez d'autres astuces...
Arnaud
Modifie 1 fois. Derniere modification le 19/09/2012 à 21:21 par Hebus_san.