Почему переопределение переменной среды LANG не меняет язык для меня?

11

Я пытаюсь запустить приложение на другом языке, как моя текущая среда. Чтобы начать просто, я хотел изменить язык ls.

Вот что я прочитал повсеместно (см. Ниже для связанных вопросов): установите LANGодин из поддерживаемых языков, например:

LANG=nl_NL.UTF-8 ls /nonexistent

чтобы он показал голландский (NL) выход.

Тем не менее, я все еще получаю вывод на английский:

$ LANG=nl_NL.UTF-8 ls -al /nonexistent
ls: cannot access /nonexistent: No such file or directory

Моя текущая среда:

$ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=

Чтобы быть уверенным, я проверил:

  • Локаль поддерживается:

    $ grep nl_NL /usr/share/i18n/SUPPORTED 
    nl_NL.UTF-8 UTF-8
    nl_NL ISO-8859-1
    nl_NL@euro ISO-8859-15
    
  • Локаль генерируется:

    sudo locale-gen nl_NL.UTF-8
    

    а sudo dpkg-reconfigure localesтакже показывает, что он создан.

  • Установлен голландский языковой пакет (уже установлен):

    sudo apt-get install language-pack-nl
    

Что еще я пробовал?

  • Используется exportдля установки обоих LANGи LANGUAGEвместо добавления команды.
  • Установка также LC_ALL.

По иронии судьбы, некоторые (только некоторые!) Приложения с графическим интерфейсом на самом деле написаны на голландском языке, но я не настроил это вообще!

введите описание изображения здесь

Я на Kubuntu 12.04 (.2), ​​насколько это важно.

Похожие вопросы (безрезультатно):

Что не так в моей системе? Где отладить это дальше?

gertvdijk
источник

Ответы:

12

Потому что ЯЗЫК, который имеет приоритет над ЯЗЫКОМ, устанавливается и не изменяется.

$ LANGUAGE=nl ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet

Более подробная информация находится в документации gettext GNU :

GNU gettext отдает предпочтение LANGUAGE над LC_ALL и LANG для обработки сообщений, но вам все равно нужно установить LANG (или LC_ALL) на основной язык; это требуется для других частей системных библиотек.

Гуннар Хьялмарссон
источник
Клянусь, я уже пробовал это. Тем не менее, глядя на мою историю оболочки, я думаю, что это потому, что я попробовал это только до генерации локали. Не могли бы вы указать источник, почему «LANGUAGE имеет приоритет над LANG»? Спасибо за внимание.
gertvdijk
gnu.org/software/gettext/manual/…
Гуннар Хьялмарссон,