OVH Cloud OVH Cloud

Gettext/Content-type utf8

5 réponses
Avatar
Laurent Seguin
Salut !

Pour un site que je prévois dès le départ multilingue, je me suis dis que
j'allais utiliser gettext (si vous avez mieux et plus simple je suis
preneur). Ne sachant pas à priori quel seront les langues utilisée, je
renvoie au client des pages normalement en utf8 (du moins c'est ce que je
déclare dans mon meta et qui est bien détecté par mon navigateur).

Mes fichiers php ainsi que mon fichier *.po sont en utf-8, j'ai pourtant
bien mis : setlocale(LC_ALL, $language.".UTF-8");
mais lors que la sortie html je me retrouve avec des trucs du genre
"prénom".

Donc je me dis que j'ai forcement merdé quelque part ou oublié de déclarer
un truc mais quoi et ou ?

Si quelqu'un a une piste à me donner...


PS : Crosspost sur fu.8bits et fcl.php avec suivis sur ce dernier.

5 réponses

Avatar
Philippe Chaissac
Salut !

Pour un site que je prévois dès le départ multilingue, je me suis dis que
j'allais utiliser gettext (si vous avez mieux et plus simple je suis
preneur). Ne sachant pas à priori quel seront les langues utilisée, je
renvoie au client des pages normalement en utf8 (du moins c'est ce que je
déclare dans mon meta et qui est bien détecté par mon navigateur).

Mes fichiers php ainsi que mon fichier *.po sont en utf-8, j'ai pourtant
bien mis : setlocale(LC_ALL, $language.".UTF-8");
mais lors que la sortie html je me retrouve avec des trucs du genre
"prénom".


bind_textdomain_codeset(DOMAINE, "UTF-8") ?

Avatar
Olivier Miakinen

Mes fichiers php ainsi que mon fichier *.po sont en utf-8, j'ai pourtant
bien mis : setlocale(LC_ALL, $language.".UTF-8");
mais lors que la sortie html je me retrouve avec des trucs du genre
"prénom".


C'est typique d'un texte en UTF-8 parfaitement correct, mais lu par le
navigateur comme si c'était de l'ISO-Latin-1.

Donc je me dis que j'ai forcement merdé quelque part ou oublié de déclarer
un truc mais quoi et ou ?


Il faut dire à ton serveur Web que les pages sont en UTF-8, afin qu'il
envoie la bonne déclaration dans les entêtes HTTP. Je fais suivre la
discussion vers fr.comp.infosystemes.www.serveurs où tu trouveras
probablement des experts en httpd.conf ou .htaccess.

Avatar
Guillaume JANY
Mes fichiers php ainsi que mon fichier *.po sont en utf-8, j'ai pourtant
bien mis : setlocale(LC_ALL, $language.".UTF-8");
mais lors que la sortie html je me retrouve avec des trucs du genre
"prénom".


ton serveur envoie peut-être par défaut un charset iso-8859-1 au navigateur.
(http://www.rexswain.com/httpview.html permet de tester une url)

pour forcer le bon charset, tu peux envoyer un header en début de fichier
php :

header("Content-Type: text/plain; charset=utf-8");

Guillaume
www.designerspace.com

Avatar
Jacques Andre
Laurent Seguin a écrit:
Salut !



mais lors que la sortie html je me retrouve avec des trucs du genre
"prénom".
c'est de l'utf-8 lu comme si c'était du latin-1



Donc je me dis que j'ai forcement merdé quelque part ou oublié de déclarer
un truc mais quoi et ou ?

Si quelqu'un a une piste à me donner...



essayer de forcer le navigateur à utiliser un codage utf-8 (préférences...)

J.André

Avatar
Laurent Seguin
Laurent Seguin , le 08 déc. 2004 23:27:23,
écrivait ceci:

Pour un site que je prévois dès le départ multilingue, je me suis dis
que j'allais utiliser gettext (si vous avez mieux et plus simple je
suis preneur). Ne sachant pas à priori quel seront les langues utilisée,*
je renvoie au client des pages normalement en utf8
[...]

mais lors que la sortie html je me retrouve avec des trucs du genre
"prénom".


Merci à tous pour vos réponses mais rien n'y a fait :-/.

Du coup, et finalement vu le peu de texte, je me suis tourné vers une
méthode un peu moins lourde que gettext (qui n'avait, pour ce projet, que
le seul interêt de jouer un peu avec) qui est de mettre toutes mes sorties
dans des fichiers de langues composés de variables globales.

--
Laurent