Gettext Debian


#1

Bonjour,

J’utilise Gettext en local avec EasyPHP lors du transfert du site sur le serveur ( debian, PHP5), Gettext est toujours installé mais ne reconnait pas les fichiers de langues. Je galère depuis plusieurs jours. Voici mon code :

$language = ‘en’;
putenv(“LANG=$language”);
setlocale(LC_ALL, $language);
// Set the text domain as ‘messages’
$domain = ‘messages’;
print bindtextdomain($domain, “/var/www/monsite/languages”);
print “
”;
textdomain($domain);
echo _(“input_description_tag”);

Le fichier de langue complié (.mo) est situé dans /var/www/monsite/languages/en/LC_MESSAGES/messages.mo

Il n’est pas trouvé par gettext puisque la variable renvoyé est la variable non traduite, quelqu’un aurait-il entendu parler de spécificité de debian à ce sujet (en particulier sur les chemins relatifs) ?

Je vous remercie !!!

Thibaud


#2

j’imagine que dans print bindtextdomain($domain, "/var/www/monsite/languages"); le ‘monsite’ était du masquage et que dans la réalité, tu as bien misprint bindtextdomain($domain, "/var/www/necctar/languages");
?

Sinon, as tu à tous hasard essayé d’ajuster les autres env LC_ ?

Sinon, c’est un peu pointu pour moi, pas d’autre idée…


#3

Quel message d’erreur ou notice/warning est renvoyé par PHP?

Mets un

error_reporting(E_ALL); dans ton script pour voir ce que PHP te renvoie.

Un phpinfo() te montre-il bien la disponibilité de gettext? PHP doit avoir été compilé avec l’option --with-gettext pour qu’il soit disponible.


#4

Bonjour,

Oui le monsite était pour masquer le nom de domaine ( je crois que c’est trop tard maintenant…).

En fait PHP ne renvoie aucune erreur et Gettext est bien activé sinon PHP renverrai une erreur comme quoi les fonctions bindtextdomain etc. ne sont pas reconnues.

Je pense que le problème vient du chemin. Dans l’installation debian, il y a des fichiers de langue dans usr/shared/locale, je ne sais pas si je dois mettre mes fichier de langues là ou si je peux les mettres dans un autre répertoire propre à mon domaine ( /var/www/monsite/languages).

Gettext est génial…Quand ça marche… Je me casse les dents sur ce problème depuis 3 jours, je ne sais plus quoi faire…

Thibaud


#5

AMA, si il n’existe pas de messages.mo dans /usr/share/local, alors essayes de l’y rajouter.
Sinon, bêtement, tu as quels droits sur messages.mo ?
Tu n’aurais pas fait des manips en root et oublié de chowner les fichiers modifiés à www-data, par hasard ?


#6

J’ai essayé de mettre messages dans locale/en/… et j’ai mis tous les fichiers en 777 le temps du débuggage

:frowning:

Merci

Thibaud


#7

et tu es bien sûr d’avoir testé un putenv("LC_MESSAGES=$language"); ?


#8

Oui et je viens de retester encore rien du tout.

merci encore !!!


#9

et j’imagine aussi que le setlocale non plus ne marche pas avec LC_MESSAGES (tjs au pif).


#10

non toujours pas mais les suggestions sont cools, c’est comme ça que je vais y arriver, mon nouveau code :slightly_smiling: :

$language = 'en'; putenv("LC_MESSAGES=$language"); putenv("LANG=$language"); setlocale(LC_ALL, $language); setlocale(LC_MESSAGES, $language); // Set the text domain as 'messages' $domain = 'messages'; print bindtextdomain($domain, "/var/www/monsite/languages/"); print "<br>"; textdomain($domain); echo _("input_description_tag");


#11

Salut . J’ai quasiment le même problème que toi . Aurais-tu trouvé finalement une solution?


#12

il manquait le droit d’execution du repertoire pour “others” (apache/php)
permettant d’aller lire le fichier.
chmod o+x en


#13

:smt082 :smt043


#14

Ah beh j’ai trouvé la solution à mon problème aussi
en faisant ce qui est indiqué cette adresse:
b.twidi.com/index.php/2005/11/14 … ext-et-php

pour ma part ce n’était donc pas un problème de droit