Author: anne aublanc Date: To: guilde Subject: 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!