Bonjour à tous,

c'est mon premier message sur ce site, avec lequel je suis assez familier depuis la lecture du CSS de Raphael il y a quelques années. J'essaie de créer un site web pour un service vraiment sympa dans la consommation collaborative, et c'est l'occasion de mettre les mains dans le camboui pour de bon !

Je fais réaliser le design par une charmante designeuses des Philippines, qui ne parle pas un mot de français...d'ou la volonté de le traduire en anglais.

J'ai suivi ce tuto en anglais :
http://mel.melaxis.com/devblog/2005/08/06/localizing-php-web-sites-using-gettext/

mais aucune traduction visible a l'URL http://mondomaine.fr/?locale=en_EN

le site est hébergé chez OVH, qui m'indique dans la config Php, prendre en charge Gettext.

comme indiqué dans le tuto, j'ai un fichier index.php à la racine, avec ce code :

<?php 
$locale = "en_EN";
if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
textdomain("messages");
?>


racine
- locale
-- en_EN
--- LC_MESSAGES/messages.mo
-- fr_FR
--- LC_MESSAGES/messages.mo



merci d'avance au connaisseur qui passerait dans le coin,

Adrien
bonjour,

Cela me semble correct. As tu regardé les valeurs de retour des fonctions putenv, bindtextdomain et textdomain ?
Bonjour Benj, merci de ta réponse,

je suis un gros newbie en php, comment faire ça ? avec un echo(putenv);

pas à l'aise... Smiley sweatdrop
Non comme cela.
echo putenv("LC_ALL=$locale");

Ensuite il faut voir la doc php de la fonction pour voir si le résultat est ok.
merci,
pour putenv, la doc dit :
" Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient. "

j'obtiens "1", c'est pareil que TRUE ?

Pour echo textdomain("LC_ALL=$locale"); j'obtiens LC_ALL=en_EN
alors que la doc indique comme retour :
" Cette fonction retourne le message courant du domaine en cas de succès, après une possible modification. "
Ce que j'obtiens ne ressemble pas à un résultat correct...

Et echo bindtextdomain("LC_ALL=$locale"); ne renvoie rien au lieu de renvoyer " Le chemin complet vers le domaine."


Ca viendrait tu Php ou bien du fichier .mo peut-etre ?
Modifié par adrien5555 (22 Mar 2014 - 10:30)
C'est
bindtextdomain("messages", "./locale");

pas
echo bindtextdomain("LC_ALL=$locale");


Si tu as toujours une erreur avec bindtextdomain essaie de lui passer en paramètre le chemin absolu.

Oui echo true affiche 1.