web-dev-qa-db-fra.com

Comment obtenir des messages d'erreur localisés?

J'essaie de voir les messages d'erreur localisés. Cependant, il me semble que le message ne provient que des paramètres régionaux par défaut "C". Par exemple.

$ cat /etc/shadow
cat: /etc/shadow: Permission denied

$ locale -a|grep fi
fi_FI.utf8

$ LC_MESSAGES=fi_FI.utf8 cat /etc/shadow
cat: /etc/shadow: Permission denied

De plus, en regardant la sortie ltrace de cat, il appelle setlocale(LC_ALL, "") et imprime le message d'erreur avec la fonction glibc error () (qui affiche le message d'erreur renvoyé par strerror (), qui doit être un message localisé).

En regardant la sortie de strace de "LC_MESSAGES = fi_FI.utf8 cat/etc/shadow", on s'aperçoit qu'il essaie d'ouvrir le catalogue de messages libc, mais pour la langue anglaise plutôt que pour fi_FI.utf8:

...
open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
...

J'ai un fichier /usr/share/locale-langpack/fi/LC_MESSAGES/libc.mo qui contient le catalogue de messages libc pour les paramètres régionaux fi_FI.utf8. Cependant, il ne semble pas être utilisé. Les paquetages language-pack-fi et language-pack-fi-base sont tous deux installés (de même que les packs de langue gnome et kde correspondants, mais je ne vois pas en quoi ils sont pertinents ici).

Qu'est-ce que je rate?

3
janneb

Il vous manque la variable d'environnement LANGUAGE, qui est définie dans Ubuntu le plus souvent, et remplace LC_MESSAGES pour les programmes compatibles GNU.

Essayer:

LANGUAGE=fi cat /etc/shadow
2
Gunnar Hjalmarsson