Чому перевизначення змінної середовища 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.

Як не дивно, деякі (лише деякі!) Програми GUI насправді є голландською мовою, але я цього не конфігурував!

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

Я на Kubuntu 12.04 (.2), ​​наскільки це важливо.

Подібні запитання (безрезультатно):

Що не так у моїй системі? Де це налагоджувати далі?

Відповіді:


12

Тому що LANGUAGE, який має перевагу над LANG, встановлений та незмінний.

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

Більш детальна інформація знаходиться в документації щодо отримання тексту GNU :

GNU gettext надає перевагу LANGUAGE над LC_ALL та LANG з метою обробки повідомлень, але вам все одно потрібно встановити LANG (або LC_ALL) на основній мові; цього вимагають інші частини системних бібліотек.


Клянусь, я вже це пробував. Але, дивлячись на історію моєї оболонки, я думаю, що це тому, що я лише спробував це перед тим, як створити локаль. Чи можете ви включити джерело, чому "LANGUAGE має перевагу над LANG"? Дякую за голову вгору
gertvdijk

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.