Gdzie jest ustawiona zmienna środowiskowa LANGUAGE?

9

W jakim pliku konfiguracyjnym ustawiona jest zmienna środowiskowa LANGUAGE? (Lub jak mogę to zmienić w inny sposób?)

Tło: bawiłem się ustawieniami języka w kubuntu i przypadkowo zainstalowałem rosyjski. Teraz nie zniknie całkowicie. Tak, angielski pojawia się w GUI, ale w wierszu poleceń jest rosyjski. Jak najlepiej potrafię, wynika to ze zmiennej środowiskowej LANGUAGE. Zobacz trzecią linię:

leon@leon-Desktop:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en:ru:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

Wszystko jest ustawione poprawnie oprócz JĘZYKA. Przeszedłem przez szereg instrukcji, jak skonfigurować ustawienia regionalne / język, ale wydaje się, że nic nie zmienia JĘZYKA (chociaż zmieniły inne zmienne środowiskowe, takie jak LANG). Nie jestem więc zainteresowany przeglądem ustawień regionalnych. Muszę konkretnie wiedzieć, jak zmienić JĘZYK (chyba że całkowicie nie rozumiem sytuacji). Co do tego, co jest warte, LANG jest ustawiony w / etc / default / locale, ale LANGUAGE nie jest tam ustawiony. (Próbowałem tam ustawić JĘZYK, a jakoś go przesłonić.) Jeśli ręcznie ustawię JĘZYK na en, to ta konkretna powłoka działa dobrze, więc myślę, że trzeba tylko zmienić JĘZYK.


EDYTOWAĆ:

Dla jasności ustawienie LANGAUGE w / etc / default / locale nie pomaga . Ponadto ~ / .pam_environment nie istnieje.

Patrz poniżej. JĘZYK jest ustawiony na „en” w / etc / default / locale. Uruchomiłem ponownie maszynę. Sprawdziłem zawartość / etc / default / locale. Jednak apt-get nadal wyświetla dane wyjściowe w języku rosyjskim, ponieważ LANGUAGE został nadpisany w innym miejscu (tworząc powyższe dane wyjściowe z lokalizacji).

leon@leon-Desktop:~$ cat /etc/default/locale 
LANG="en_US.UTF-8"
LANGUAGE="en"
leon@leon-Desktop:~$ cat ~/.pam_environment
cat: /home/leon/.pam_environment: No such file or directory
leon@leon-Desktop:~$ sudo apt-get update
Игн http://mirror.anl.gov utopic InRelease

...

EDYCJA 2:

Wygląda na to, że ~ / .kde / env / setlocale.sh był culperate. Chyba złożę raport o błędzie KDE.

$ cat ~/.kde/env/setlocale.sh
export LANGUAGE=en:ru:en
export LANG=en_US.UTF-8
export LC_NUMERIC=en_US.UTF-8
export LC_TIME=en_US.UTF-8
export LC_MONETARY=en_US.UTF-8
export LC_PAPER=en_US.UTF-8
export LC_IDENTIFICATION=en_US.UTF-8
export LC_NAME=en_US.UTF-8
export LC_ADDRESS=en_US.UTF-8
export LC_TELEPHONE=en_US.UTF-8
export LC_MEASUREMENT=en_US.UTF-8
lmmaurer
źródło

Odpowiedzi:

5

Zaczerpnięte z help.ubuntu.com

The LANGUAGE priority list

The "LANGUAGE" environment variable, which is set by the GUIs more often than not on 
Ubuntu desktops, controls language for message and menu display for GNU compatible 
applications. For such applications it overrides whatever locale names are set in 
"LANG" and "LC_MESSAGES".

Unlike "LANG" and "LC_*", "LANGUAGE" should not be assigned a complete locale name 
including the encoding part (e.g. ".UTF-8"). Instead "LANGUAGE" should contain a 
colon separated priority list of language codes, for instance "es:de:en". A single 
language code is also correct.

Choć odpowiedź jest kiepska, to prawdopodobnie tego właśnie chcesz.

W artykule wymienionym w powyższym linku wyjaśniono, że jeśli chcesz zmienić język wyświetlany w wierszu polecenia, musisz ustawić oba LANGi LANGUAGEodpowiednio w jednym /etc/default/localelub ~/.pam_environment.

Ponieważ już próbowałeś ustawienie LANGUAGEw /etc/default/locale, chciałbym spróbować ustawić je ~/.pam_environmentjako że jest to plik konfiguracyjny dla użytkownika i jego zawartość powinna zastąpić zestaw czegokolwiek w otoczeniu globalnym.

EDYTOWAĆ:

I poszedł do przodu i próbował powielając ten problem, że opisany przez ustawienie LANGUAGEw /etc/default/localecelu "en:ru:en"wylogowanie i ponowne zalogowanie. To działało. Komunikaty o błędach były następnie wyświetlane w języku rosyjskim, przynajmniej dla konta root (na którym testowałem to konto). Zmiana wartości w LANGUAGEcelu "en"jej naprawienia.

Alexej Magura
źródło
Niestety, jak zauważyłem, ustawienie zmiennej w / etc / default / locale nie wystarczy. (Zobacz wyjaśnienie w oryginalnym poście i edycji.) Najwyraźniej zmienna gdzieś zostaje nadpisana i muszę wiedzieć, gdzie to gdzieś jest.
lnmaurer
@lnmaurer Wiem. Próbowałeś to ustawić ~/.pam_environment? Widziałem, że twój komentarz na ten temat nie istnieje. Możesz spróbować, grep LANGUAGE /etc -r | lessa następnie przejść i ręcznie sprawdzić każde pojedyncze wystąpienie LANGUAGE. Pamiętaj również, aby sprawdzić ~/.profilei~/.xsessionrc
Alexej Magura
2
Przyjąłem twoją radę grepping. /etcnic się nie pojawiło, ale pojawiło się grepowanie mojego katalogu domowego /.kde/env/setlocale.sh. Wygląda na to, że to był problem.
lnmaurer
1

Wygląda na to, że masz LANGUAGEzmienną ustawioną na ru: en lub coś w tym /etc/default/locale, więc spróbuj ją zmienić na po prostu en.

Odpowiedź, którą napisał Aleksej Magura, również wspomina ~/.pam_environment. Być może, ponieważ masz Kubuntu, mogą być w to zaangażowane inne pliki (lub też).

Gunnar Hjalmarsson
źródło
~ / .pam_environment nie istnieje dla mnie. Czy są jeszcze jakieś przemyślenia, za które pliki można winić?
lnmaurer
@ lnmaurer: Być może ~/.kde/share/config/kcmlocale-groupingma to coś wspólnego. Można to zmienić w Ustawieniach systemu -> Ustawienia regionalne -> Języki.
Gunnar Hjalmarsson
1
Masz rację, że było to coś specyficznego dla KDE. Wygląda na to, że to ~/.kde/env/setlocale.shbył problem.
lnmaurer