Je suis en train d'essayer de comprendre quelque chose à la traduction de messages via gettext().

Je crée donc par exemple un petit script Bash comme ceci (que j'appelle gettxt) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
#! /bin/bash
export TEXTDOMAIN=gettxt
export TEXTDOMAINDIR="/usr/share/locale"
. gettext.sh
gettxt=$0
echo $(eval_gettext "oops")
exit 0
et je fais ce qu'il faut pour que 'oops' soit traduit en français par ouah (en créant puis plaçant un fichier gettxt.mo approprié dans /usr/share/locale/fr/LC_MESSAGES).
Cela marche, quand je lance le script, il affiche bien ouah.
Je suis sur un système francophone (une Mandriva Linux 2008.0, sous KDE).
J'essaie maintenant de dire au système que je suis en anglais, pour tester et m'assurer qu'il donne cette fois à l'affichage oops.
J'essaie pour ça de changer les valeurs de LC_ALL ou LC_MESSAGES ou LANG (en y mettant par exemple en_GB, ou en) : rien n'y fait ! Quand je lance le script, il continue à me donner la traduction française. J'ai essayé aussi de changer la langue via le Centre de Contrôle de KDE : idem.
A noter que j'avais le même problème avec un petit programme C (incluant un appel à setlocale(), même en compilant avec setlocale( LC_ALL, "en_US") j'obtenais toujours les messages en français).
Comment diable changer temporairement la langue du système de telle sorte que gettext() en tienne compte ?? Comment le convaincre que pour un instant on n'est plus en français mais en anglais ou en néerlandais ?