Dlaczego przesłonięcie zmiennej środowiskowej LANG nie zmienia dla mnie języka?

11

Próbuję uruchomić aplikację w innym języku jako moim obecnym środowisku. Na początek chciałem zmienić język ls.

Oto, co przeczytałem wszędzie (pokrewne pytania): ustaw LANGna jedną z obsługiwanych lokalizacji, np .:

LANG=nl_NL.UTF-8 ls /nonexistent

aby wyświetlał wynik holenderski (NL).

Jednak nadal otrzymuję angielski:

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

Moje obecne środowisko:

$ 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=

Dla pewności sprawdziłem:

  • Obsługiwane są ustawienia regionalne:

    $ grep nl_NL /usr/share/i18n/SUPPORTED 
    nl_NL.UTF-8 UTF-8
    nl_NL ISO-8859-1
    nl_NL@euro ISO-8859-15
    
  • Ustawienia regionalne są generowane:

    sudo locale-gen nl_NL.UTF-8
    

    a sudo dpkg-reconfigure localestakże pokazuje, że został wygenerowany.

  • Zainstalowano holenderski pakiet językowy (już zainstalowany):

    sudo apt-get install language-pack-nl
    

Co jeszcze próbowałem?

  • Używanie exportdo ustawiania obu LANGi LANGUAGEzamiast dodawania polecenia.
  • Ustawienie również LC_ALL.

Jak na ironię, niektóre (tylko niektóre!) Aplikacje GUI są w języku niderlandzkim, ale wcale tego nie skonfigurowałem!

wprowadź opis zdjęcia tutaj

Jestem na Kubuntu 12.04 (.2), ​​o ile to ważne.

Podobne pytania (bezskutecznie):

Co jest nie tak w moim systemie? Gdzie dalej to debugować?

gertvdijk
źródło

Odpowiedzi:

12

Ponieważ LANGUAGE, który ma pierwszeństwo przed LANG, jest ustawiony i niezmieniony.

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

Więcej informacji znajduje się w dokumentacji GNU gettext :

GNU gettext daje pierwszeństwo LANGUAGE zamiast LC_ALL i LANG w celu obsługi wiadomości, ale nadal musisz mieć LANG (lub LC_ALL) ustawiony na język podstawowy; jest to wymagane przez inne części bibliotek systemowych.

Gunnar Hjalmarsson
źródło
Przysięgam, że już tego próbowałem. Jednak patrząc na moją historię powłoki myślę, że dzieje się tak, ponieważ próbowałem tego dopiero przed wygenerowaniem ustawień narodowych. Czy możesz podać źródło, dla którego „LANGUAGE ma pierwszeństwo przed LANG”? Dzięki za heads-upy.
gertvdijk