Как получить локализованные сообщения об ошибках?

Я пытаюсь увидеть локализованные сообщения об ошибках. Тем не менее, мне кажется, я получаю сообщение только из локали по умолчанию "C". Э.Г.

$ 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

Кроме того, глядя на вывод ltrace cat, он вызывает setlocale(LC_ALL, "") и печатает сообщение об ошибке с помощью функции glibc error () (которая печатает сообщение об ошибке, возвращаемое strerror (), которое должно быть локализованное сообщение).

Глядя на вывод strace «LC_MESSAGES = fi_FI.utf8 cat / etc / shadow», можно увидеть, что он пытается открыть каталог сообщений libc, но для английской локали, а не для 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)
...

У меня есть файл /usr/share/locale-langpack/fi/LC_MESSAGES/libc.mo, который содержит каталог сообщений libc для локали fi_FI.utf8, однако, похоже, он не используется. Установлены пакеты language-pack-fi, language-pack-fi-base (как и соответствующие языковые пакеты gnome и kde, но я не вижу здесь их актуальности).

Чего мне не хватает?

3
задан 28 November 2013 в 13:33

1 ответ

Вам не хватает переменной окружения LANGUAGE, которая чаще всего устанавливается в Ubuntu и переопределяет LC_MESSAGES для программ, совместимых с GNU.

Попробуйте:

LANGUAGE=fi cat /etc/shadow
0
ответ дан 28 November 2013 в 13:33

Другие вопросы по тегам:

Похожие вопросы: