Re: gettext

トップ ページ

このメッセージに返信
著者: anne aublanc
日付:  
To: guilde
題目: Re: gettext

----- Original Message -----
From: "Miguel Moquillon" <miguel.moquillon@???>
To: <guilde@???>
Sent: Monday, December 13, 2004 12:29 AM
Subject: Re: gettext


| On Sun, Dec 12, 2004 at 05:04:29PM +0100, anne aublanc wrote:
| > bonjour,
| >
| > Je recherche une doc simple pour utiliser gettext...
| >
| > Je souhaite utiliser : "use Locale::gettext;" dans des pgm perl...
| >
| > Ce que je n'arrive pas à trouver c'est où et comment mettre les
| > traductions...
| Bonjour,

|
| J'ai déjà utiliser gettext avec des programmes en Ruby par exemple.
| Je met toutes les traductions de textes dans un fichier dédié qu'inclue
| les fichier du programme. Ce fichier est en faite toute une suite de
| définition de variables contenant le texte de traduction. Par exemple :
| toto = _( "chez les papoos" )
| L'opérateur '_' est un raccourcis à la fonction 'gettext' (il y a aussi
| 'N_' si mes souvenirs sont bons mais je ne l'utilise pas).

|
| Il ne faut pas oublier de préciser le domaine dans le code auquel
| s'attache le programme à traduire ; dans mon cas, c'est le nom du
| programme :
| require 'gettext'
| bindtextdomain( "monprogramme" )

|
| Ensuite je crée un fichier po à partir de ce dernier. C'est dans ce
| fichier qu'il faut écrire les traductions pour une langue donnée.
| Avec Ruby, la commande est :
| rgettext text.rb -o monprogramme-fr.po
| Avec des programmes C/C++, python, Lisp, Java, ObjC, etc. :
| xgettext text.h -o monprogramme-fr.po (par exemple).

|
J'ai eu quelques soucis...il m'a mis beaucoup plus de texte que j'aurais
aimé!

| Ensuite je transforme le fichier po en fichier exploitable par gettext,
| c'est à dire en fichier mo:
| rmsgfmt monprogramme-fr.po -o fr.mo
| Ce fichier mo doit être placé, pour être exploitable dans le répertoire
| des locales :
| cp fr.mo /usr/share/locale/fr/LC_MESSAGES/monprogramme.mo
| (ici le bintextdomain recherche en fait un fichier monprogramme.mo dans
| la locale donnée par les variables d'environnement LC_ALL, LANG, etc.;
| donc attention au nom donnée au fichier mo).

|
no problem pour le fichier mo

Merci à tous

Par contre, j'ai des problèmes avec les variables d'environnement!

$old_locale = setlocale(LC_CTYPE);
$old_locale1 = setlocale(LC_MESSAGES);
Un print me donne "C" pour ces 2 variables...

Si je force la langue avec
$ENV{LC_MESSAGES} = 'fr_FR';
setlocale(LC_MESSAGES, "");
J'ai les libellés en français!

Comment voir les variables d'environnement?
%ENV?
J'ai listé... :
La liste des clés : QUERY_STRING SERVER_ADDR nokeepalive
HTTP_ACCEPT_LANGUAGE SERVER_PROTOCOL force_response_1_0 HTTP_CONNECTION
SERVER_SIGNATURE HTTP_REFERER REMOTE_PORT HTTP_USER_AGENT HTTP_ACCEPT
GATEWAY_INTERFACE ssl_unclean_shutdown HTTP_HOST SERVER_SOFTWARE
SERVER_ADMIN SCRIPT_URI REMOTE_ADDR SCRIPT_NAME SCRIPT_URL SERVER_NAME
HTTP_ACCEPT_ENCODING DOCUMENT_ROOT REQUEST_URI REQUEST_METHOD
SCRIPT_FILENAME downgrade_1_0 PATH SERVER_PORT

Donc cela ne doit pas être bon ;o))

Si vous pouviez me donner des infos pour voir les variables
d'environnement...

phpinfo :
HTTP Headers Information :
HTTP_ACCEPT_LANGUAGE = fr-be
Environment :
LANG = fr_CA

Merci
Anne