Où est définie la variable d'environnement LANGUAGE?

9

Dans quel fichier de configuration la variable d'environnement LANGUAGE est-elle définie? (Ou comment puis-je le changer par d'autres moyens?)

Contexte: Je jouais avec les paramètres de langue dans kubuntu et j'ai installé le russe par accident. Maintenant, cela ne disparaîtra pas totalement. Oui, l'anglais apparaît dans l'interface graphique, mais c'est le russe sur la ligne de commande. Du mieux que je peux comprendre, cela est dû à la variable d'environnement LANGUAGE. Voir la troisième ligne:

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=

Tout est correctement réglé, sauf la LANGUE. J'ai parcouru un certain nombre d'instructions sur la façon de configurer les paramètres régionaux / la langue, mais rien ne semble changer le LANGAGE (bien qu'ils aient changé d'autres variables environnementales, comme le LANG). Donc, je ne suis pas intéressé par un aperçu de la façon de modifier les paramètres régionaux. J'ai besoin de savoir spécifiquement comment changer la LANGUE (à moins que je ne comprenne totalement la situation). Pour ce que ça vaut, LANG est défini dans / etc / default / locale, mais LANGUAGE n'y est pas défini. (J'ai essayé de définir LANGUAGE là-bas, et il est remplacé d'une manière ou d'une autre.) Si j'ai défini manuellement LANGUAGE sur en, alors ce shell particulier fonctionne très bien, donc je pense que seul LANGUAGE doit être changé.


ÉDITER:

Juste pour être clair, définir LANGAUGE dans / etc / default / locale n'aide pas . De plus, ~ / .pam_environment n'existe pas.

Voir ci-dessous. LANGUAGE est défini sur "en" dans / etc / default / locale. J'ai redémarré la machine. J'ai vérifié le contenu de / etc / default / locale. Cependant, apt-get sort toujours en russe car LANGUAGE a été écrasé ailleurs (produisant la sortie ci-dessus à partir des paramètres régionaux).

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:

Il semble que ~ / .kde / env / setlocale.sh était le coupable. Je suppose que je déposerai un rapport de bogue 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
lnmaurer
la source

Réponses:

5

Tiré de 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.

En boiteux comme une réponse de lien est, c'est probablement ce que vous voulez.

Le message référencé dans le lien ci-dessus explique que si vous souhaitez modifier la langue qui apparaît sur la ligne de commande, vous devez définir les deux LANGet en LANGUAGEconséquence dans /etc/default/localeou ~/.pam_environment.

Puisque vous avez déjà essayé d' installer LANGUAGEdans /etc/default/locale, je vais essayer le mettre en ~/.pam_environmentpuisque c'est un fichier de configuration utilisateur et son contenu doit écraser tout ensemble dans l'environnement mondial.

ÉDITER:

Je suis allé de l'avant et j'ai essayé de reproduire le problème que vous avez décrit LANGUAGEen /etc/default/localevous "en:ru:en"connectant à vous déconnecter puis en vous reconnectant. Cela a fonctionné. Des messages d'erreur ont ensuite été affichés en russe, au moins pour le compte root (qui était le compte sur lequel je testais cela). Changer la valeur de LANGUAGEpour le "en"corriger.

Alexej Magura
la source
Malheureusement, comme je l'ai noté, définir la variable dans / etc / default / locale n'est pas suffisant. (Voir le message d'origine et la modification pour des éclaircissements.) Apparemment, la variable est remplacée quelque part, et j'ai besoin de savoir où se trouve ce quelque part.
lnmaurer
@lnmaurer je sais. Avez-vous essayé de l'installer ~/.pam_environment? J'ai vu que votre commentaire à ce sujet n'existait pas. Vous pouvez essayer grep LANGUAGE /etc -r | lesspuis parcourir et vérifier manuellement chaque instance de LANGUAGE. Assurez-vous également de vérifier ~/.profileet~/.xsessionrc
Alexej Magura
2
J'ai suivi vos conseils en saluant. /etcrien, mais le fait de saluer mon répertoire personnel est apparu /.kde/env/setlocale.sh. Il semble que c'était le problème.
lnmaurer
1

Il semble que vous ayez la LANGUAGEvariable définie sur ru: en ou quelque chose /etc/default/localededans, alors essayez de la changer en juste en.

La réponse, qu'Alexej Magura a écrite, mentionne également ~/.pam_environment. Peut-être, puisque vous avez Kubuntu, d'autres fichiers peuvent être impliqués à la place (ou aussi).

Gunnar Hjalmarsson
la source
~ / .pam_environment n'existe pas pour moi. Avez-vous d'autres idées sur le fichier à blâmer?
lnmaurer
@lnmaurer: Cela ~/.kde/share/config/kcmlocale-groupinga peut-être quelque chose à voir avec cela. Il peut être modifié via Paramètres système -> Paramètres régionaux -> Langues.
Gunnar Hjalmarsson
1
Vous avez raison, c'était quelque chose de spécifique à KDE. Il semble que ~/.kde/env/setlocale.shc'était le problème.
lnmaurer