¿Dónde se establece la variable de entorno LANGUAGE?

9

¿En qué archivo de configuración se establece la variable de entorno LANGUAGE? (¿O cómo puedo cambiarlo por otros medios?)

Antecedentes: estaba jugando con la configuración de idioma en kubuntu e instalé el ruso por accidente. Ahora no desaparecerá por completo. Sí, el inglés aparece en la GUI, pero es ruso en la línea de comando. Lo mejor que puedo entender, es debido a la variable de entorno LANGUAGE. Ver la tercera línea:

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=

Todo está configurado correctamente, excepto IDIOMA. He seguido una serie de instrucciones sobre cómo configurar la configuración regional / idioma, pero nada parece cambiar el IDIOMA (aunque han cambiado otras variables ambientales, como LANG). Por lo tanto, no estoy interesado en una descripción general de cómo cambiar la configuración regional. Necesito saber específicamente cómo cambiar el LENGUAJE (a menos que esté entendiendo totalmente la situación). Para lo que vale, LANG está configurado en / etc / default / locale, pero LANGUAGE no está configurado allí. (Intenté configurar IDIOMA allí, y de alguna manera se anula.) Si configuro manualmente IDIOMA en, entonces ese shell en particular funciona bien, por lo que creo que solo se debe cambiar el IDIOMA.


EDITAR:

Solo para aclarar, configurar LANGAUGE en / etc / default / locale no ayuda . Además, ~ / .pam_environment no existe.

Vea abajo. IDIOMA se establece en "en" en / etc / default / locale. Reinicié la máquina. Verifiqué el contenido de / etc / default / locale. Sin embargo, apt-get todavía sale en ruso porque LANGUAGE se sobrescribió en otro lugar (produciendo el resultado anterior de la configuración regional).

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

...

EDITAR 2:

Parece que ~ / .kde / env / setlocale.sh fue el culperate. Supongo que presentaré un informe de error de 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
Inmaurer
fuente

Respuestas:

5

Tomado 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.

Tan lamentable como es una respuesta de enlace, esto es probablemente lo que quieres.

La publicación a la que se hace referencia en el enlace anterior explica que si desea cambiar el idioma que aparece en la línea de comandos, debe configurar ambos LANGy, LANGUAGEen consecuencia, en /etc/default/localeo ~/.pam_environment.

Como ya ha intentado fijar LANGUAGEen /etc/default/locale, que iba a tratar de colocarlo en ~/.pam_environmentya que es un archivo de configuración de usuario y su contenido debería sobrescribir configurar nada en el medio ambiente mundial.

EDITAR:

Seguí adelante y trató de duplicar el problema que usted ha descrito mediante el establecimiento LANGUAGEde /etc/default/localeal "en:ru:en"cerrar la sesión y volver a ingresar. Funcionó. Los mensajes de error se mostraban en ruso, al menos para la cuenta raíz (que era la cuenta en la que estaba probando esto). Cambiando el valor de LANGUAGEpara "en"arreglarlo.

Alexej Magura
fuente
Desafortunadamente, como señalé, no es suficiente establecer la variable en / etc / default / locale (Vea la publicación original y la edición para aclarar). Aparentemente, la variable se sobrescribe en algún lugar, y necesito saber dónde está ese lugar.
Inmaurer
@lnmaurer lo sé. ¿Intentaste configurarlo ~/.pam_environment? Vi tu comentario sobre que no existe. Puede intentar grep LANGUAGE /etc -r | lessy luego revisar y comprobar manualmente cada instancia de LANGUAGE. Además, asegúrese de verificar ~/.profiley~/.xsessionrc
Alexej Magura
2
Seguí tu consejo grepping. /etcno apareció nada, pero apareció grepping en mi directorio personal /.kde/env/setlocale.sh. Parece que ese fue el problema.
Inmaurer
1

Parece que tiene la LANGUAGEvariable establecida en ru: en o algo /etc/default/localeasí, así que intente cambiarla a solo en.

La respuesta, que Alexej Magura escribió, también menciona ~/.pam_environment. Posiblemente, dado que tiene Kubuntu, otros archivos pueden estar involucrados en su lugar (o también).

Gunnar Hjalmarsson
fuente
~ / .pam_environment no existe para mí. ¿Alguna otra idea de qué archivo podría ser el culpable?
Inmaurer
@lnmaurer: Posiblemente ~/.kde/share/config/kcmlocale-groupingtenga algo que ver con eso. Se puede cambiar a través de Configuración del sistema -> Configuración regional -> Idiomas.
Gunnar Hjalmarsson
1
Tienes razón en que era algo específico de KDE. Parece que ~/.kde/env/setlocale.shfue el problema.
Inmaurer