Wo ist die Umgebungsvariable LANGUAGE festgelegt?

9

In welcher Konfigurationsdatei ist die Umgebungsvariable LANGUAGE festgelegt? (Oder wie kann ich es auf andere Weise ändern?)

Hintergrund: Ich habe mit Spracheinstellungen in Kubuntu herumgespielt und versehentlich Russisch installiert. Jetzt wird es nicht ganz verschwinden. Ja, Englisch wird in der GUI angezeigt, aber es ist Russisch in der Befehlszeile. Wie ich am besten beurteilen kann, liegt es an der Umgebungsvariablen LANGUAGE. Siehe die dritte Zeile:

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=

Bis auf die SPRACHE ist alles richtig eingestellt. Ich habe eine Reihe von Anweisungen zum Konfigurieren des Gebietsschemas / der Sprache durchgearbeitet, aber nichts scheint die SPRACHE zu ändern (obwohl sie andere Umgebungsvariablen wie LANG geändert haben). Ich bin also nicht an einer Übersicht über das Ändern des Gebietsschemas interessiert. Ich muss speziell wissen, wie man SPRACHE ändert (es sei denn, ich verstehe die Situation völlig falsch). Für das, was es wert ist, ist LANG in / etc / default / locale festgelegt, aber LANGUAGE ist dort nicht festgelegt. (Ich habe versucht, LANGUAGE dort einzustellen, und es wird irgendwie überschrieben.) Wenn ich LANGUAGE manuell auf en setze, funktioniert diese bestimmte Shell einwandfrei, sodass ich denke, dass nur LANGUAGE geändert werden muss.


BEARBEITEN:

Um dies zu verdeutlichen, hilft es nicht , LANGAUGE in / etc / default / locale festzulegen . Außerdem existiert ~ / .pam_environment nicht.

Siehe unten. LANGUAGE ist in / etc / default / locale auf "en" gesetzt. Ich habe die Maschine neu gestartet. Ich habe den Inhalt von / etc / default / locale überprüft. Apt-get gibt jedoch weiterhin Russisch aus, da LANGUAGE an anderer Stelle überschrieben wurde (wodurch die oben genannte Ausgabe vom Gebietsschema erzeugt wird).

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

...

EDIT 2:

Es sieht so aus, als ob ~ / .kde / env / setlocale.sh der Schuldige war. Ich denke, ich werde einen KDE-Fehlerbericht einreichen.

$ 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
lnmaurer
quelle

Antworten:

5

Entnommen aus 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.

So lahm eine Linkantwort auch ist, dies ist wahrscheinlich das, was Sie wollen.

In dem Beitrag, auf den im obigen Link verwiesen wird, wird erläutert, dass Sie, wenn Sie die in der Befehlszeile angezeigte Sprache ändern möchten, beide LANGund LANGUAGEentsprechend entweder /etc/default/localeoder festlegen müssen ~/.pam_environment.

Da Sie bereits Einstellung versucht haben , LANGUAGEin /etc/default/locale, würde ich versuchen , es bei der Einrichtung , ~/.pam_environmentda das ist eine Benutzer - Konfigurationsdatei und dessen Inhalt sollte etwas Satz im globalen Umfeld zu überschreiben.

BEARBEITEN:

Ich ging weiter und versuchte , das Problem zu duplizieren , dass Sie , indem Sie beschrieben LANGUAGEin /etc/default/localezu "en:ru:en"abzumelden und dann in der Anmeldung zurück. Es funktionierte. Fehlermeldungen wurden dann auf Russisch angezeigt, zumindest für das Root-Konto (auf dem ich dies getestet habe). Ändern Sie den Wert von, um ihn LANGUAGEzu "en"beheben.

Alexej Magura
quelle
Wie ich bereits erwähnt habe, reicht es leider nicht aus, die Variable in / etc / default / locale festzulegen. (Zur Verdeutlichung siehe den Originalbeitrag und die Bearbeitung.) Anscheinend wird die Variable irgendwo überschrieben, und ich muss wissen, wo sich diese irgendwo befindet.
lnmaurer
@ lnmaurer Ich weiß. Haben Sie versucht, es einzurichten ~/.pam_environment? Ich habe gesehen, dass Ihr Kommentar dazu nicht existiert. Sie können versuchen grep LANGUAGE /etc -r | less, jede einzelne Instanz von manuell zu überprüfen LANGUAGE. Achten Sie auch darauf, zu überprüfen ~/.profileund~/.xsessionrc
Alexej Magura
2
Ich habe Ihren Rat befolgt. /etcEs ist nichts aufgetaucht, aber mein Home-Verzeichnis ist aufgetaucht /.kde/env/setlocale.sh. Es sieht so aus, als wäre das das Problem.
lnmaurer
1

Es hört sich so an, als hätten Sie die LANGUAGEVariable auf ru: en oder etwas in gesetzt /etc/default/locale. Versuchen Sie also, sie dort in nur en zu ändern.

Die Antwort, die Alexej Magura schrieb, erwähnt auch ~/.pam_environment. Da Sie Kubuntu haben, können möglicherweise stattdessen (oder auch) andere Dateien beteiligt sein.

Gunnar Hjalmarsson
quelle
~ / .pam_environment existiert für mich nicht. Irgendwelche anderen Gedanken für welche Datei könnte schuld sein?
lnmaurer
@ lnmaurer: Hat möglicherweise ~/.kde/share/config/kcmlocale-groupingetwas damit zu tun. Sie kann über Systemeinstellungen -> Gebietsschema -> Sprachen geändert werden.
Gunnar Hjalmarsson
1
Sie haben Recht, dass es etwas KDE-spezifisches war. Es sieht so aus, ~/.kde/env/setlocale.shals wäre das Problem.
lnmaurer