[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Tk et gettext



Salut,

C'est limite hors-sujet mais c'est pour un logiciel destiné à
Debian... J'ai envoyé un message d'aide sur fr.comp.lang.perl mais
cela n'a pas l'air de donner quelque chose...

Alors, je tente :

Je suis en train d'internationnaliser un long programme écrit en
Perl/Tk. Il est écrit en français donc je me contente
d'internationaliser le français avec de localiser (et donc de revenir
à un source en anglais).

Pour cela, j'utilise gettext :

use POSIX; use Locale::gettext; setlocale(LC_ALL, "");
bindtextdomain("echelon_message", "./");
textdomain("echelon_message");

(tout est en local pour le moment).

J'ai remplacé toutes les chaînes à traduire sur le modèle :

chaîne -> gettext("chaîne")

Pour les print, cela n'est pas un problème (on peut même séparer les
marqueurs comme \n comme c'est recommandé). Par contre, j'ai fait de
même pour tout, y compris Tk (principalement, les « text => ») et
divers trucs internes de Perl qui me servent un moment ou un autre à
produire un affichage, par exemple :

    %field =
      (
       user => ["user", gettext("Utilisateur :")],
       host => ["hostname", gettext("Machine :") ],
       date => ["date", gettext("Date :") ],
       time => ["current_time", gettext("Heure :") ],
      );

J'ai ensuite extrait toutes les chaînes sur le modèle :

$ xgettext --language=C -sn *pl -o echelon_message.po

Bon, pas de soucis (et dans la doc, on dit que l'histoire du langage
n'est pas une gêne pour Perl). Le .po a l'air correct (j'en ai traduit
plein...) donc tout parait OK.

Sauf que... le programme qui fonctionnait *avant* ne fonctionne plus
*maintenant*. Il s'arrête en me disant qu'il ne trouve plus un
sous-programme qui existe bien quelques lignes plus bas. Je n'ai
aucune indication (avec le -w) d'un malaise de Perl sur l'i18n des
fichiers.

Par acquis de conscience, j'ai passé un diff minutieux sur tous les
fichiers avec ceux d'avant l'i18n mais je ne peux trouver aucun
changement autre que l'i18n (et donc l'introduction de gettext).

Ai-je oublié quelque chose d'important ? C'est la première fois que je
fais cela et la doc sur le sujet est très mince (sur Debian
GNU/Linux : dans /usr/share/doc/liblocale-gettext-perl/README.gz (qui
m'a servi de support: c'est un paquet de Raphaël, notre futur leader
;-) ) et le perldoc gettext (plus que sommaire... et non accessible en
ligne...)). Je n'ai rien non plus dans la littérature O'Reilly en ma
possession (c'est-à-dire tous les tomes sur Perl).

Bref, si une bonne âme pouvait me dépanner... par avance, merci.

PK

PS : seul indice : le msgfmt me sort une erreur : « attention:
l'en-tête n'a pas été trouvé ». Comme j'ignore de quel en-tête il
parle (et que j'ai rempli les champs traditionnels d'en-têtes), je ne
suis pas avancé :-(

-- 
      |\      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:p.karatchentzeff@free.fr
     |,4-  ) )-,_. ,\ (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'\_)       



Reply to: