On Tue, Aug 08, 2006 at 10:01:00AM +0200, Vincent Lefevre wrote: [...] > Mais le fait que en* soit ignoré bien que l'exécutable contienne > les messages en anglais, est-ce que cela te paraît normal, du point > de vue de l'utilisateur? Y aurait-il une raison pour laquelle un > utilisateur aurait besoin d'utiliser LANGUAGE=en:fr?
Hmmm, je ne comprends pas ta question. La variable LANGUAGE est une extension GNU, utilisée notamment par GNU gettext et GNU libc ; elle sert lors de l'affichage des chaines issues des catalogues gettext, c'est-à-dire /usr/share/locale/<locale>/LC_MESSAGES/<domaine>.mo Cela explique les interrogations de Mike concernant la commande date : celle-ci utilise les définitions fournies dans la locale actuelle, et pas LC_MESSAGES/coreutils.mo, pour afficher la date, le contenu de LANGUAGE n'a donc aucune influence dans ce cas très précis. Pour le vérifier : $ LC_ALL=fr_FR.UTF-8 LANGUAGE=en strace -e open cp [...] open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 open("/usr/share/locale/locale.alias", O_RDONLY) = 3 open("/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) cp: missing file operand Try `cp --help' for more information. $ LC_ALL=fr_FR.UTF-8 LANGUAGE=en strace -e open date [...] open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 open("/etc/localtime", O_RDONLY) = 3 mardi 8 août 2006, 21:36:41 (UTC+0200) Maintenant que le cas de date est élucidé, revenons à nos moutons : $ LC_ALL=fr_FR.UTF-8 LANGUAGE=en_US:fr_FR strace -e open cp [...] open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 open("/usr/share/locale/locale.alias", O_RDONLY) = 3 open("/usr/share/locale/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/fr_FR/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/fr/LC_MESSAGES/coreutils.mo", O_RDONLY) = 3 open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3 open("/usr/lib/gconv/ISO8859-1.so", O_RDONLY) = 3 cp: opérande fichier manquant Pour en savoir davantage, faites: « cp --help ». On peut déjà tirer plusieurs conclusions de cet exemple : - Avec LANGUAGE=en_US:fr_FR, les catalogues sont cherchées dans l'ordre dans les sous-répertoires en_US, en, fr_FR et fr ; ainsi mettre LANGUAGE=en_US:en:fr_FR:fr donnera un résultat strictement identique. - Comme les catalogues en_US et en n'existent pas, on a des messages en français. - Avec LANGUAGE=fr_CA:fr_CH, on ne verra le catalogue fr_CH que si fr n'existe pas. - Le contenu du catalogue fr est codé en ISO-8859-1, et doit donc être converti en UTF-8. La forme complète d'une locale est <langue>_<territoire>.<jeu de caractères>@<modificateur> Tu peux regarder avec $ LC_ALL=fr_FR.UTF-8 [EMAIL PROTECTED] strace -e open cp dans quel ordre exact sont cherchés les catalogues, et comparer les sorties de $ LC_ALL=fr_FR.UTF-8 [EMAIL PROTECTED] gettext --help $ LC_ALL=fr_FR.UTF-8 LANGUAGE=en gettext --help pour voir à quoi sert le catalogue [EMAIL PROTECTED] > > > Enfin, sur une de mes machines, /usr/share/locale/en_US/LC_MESSAGES/ > > > contient tout de même gcalctool.mo et /usr/share/locale/en/LC_MESSAGES/ > > > contient xmms.mo (mais rien d'autre). > > > > Cela a un sens si ces fichiers contiennent des caractères non-ASCII, > > Obtient-on quelque chose de différent en définissant LANGUAGE=en (par > exemple) et en ne définissant pas de langue (e.g. LANG=C), notamment > si les fichiers contiennent des caractères non-ASCII? Si LANG=C (ou est une locale qui n'existe pas, ce qui est équivalent), le contenu de LANGUAGE est ignoré, les messages originaux sont écrits. Je ne connais pas la raison exacte, mais c'est fait exprès d'après les commentaires dans les sources. Denis -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:" To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]