Onde está a variável de ambiente LANGUAGE definida?

9

Em qual arquivo de configuração a variável de ambiente LANGUAGE está definida? (Ou como posso alterá-lo por outros meios?)

Contexto: Eu estava brincando com as configurações de idioma no kubuntu e instalei o russo por acidente. Agora não vai desaparecer totalmente. Sim, o inglês aparece na GUI, mas é russo na linha de comando. Pelo melhor que pude descobrir, é devido à variável de ambiente LANGUAGE. Veja a terceira linha:

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=

Tudo está definido corretamente, exceto LANGUAGE. Passei por várias instruções sobre como configurar o código do idioma / idioma, mas nada parece mudar LANGUAGE (embora eles tenham alterado outras variáveis ​​ambientais, como LANG). Portanto, não estou interessado em uma visão geral de como alterar a localidade. Preciso saber especificamente como mudar o IDIOMA (a menos que eu esteja totalmente entendendo mal a situação). Pelo que vale, LANG está definido em / etc / default / locale, mas LANGUAGE não está definido lá. (Tentei definir LANGUAGE lá e ele será substituído de alguma forma.) Se eu definir LANGUAGE manualmente para en, então esse shell específico funcionará bem, então acho que apenas LANGUAGE precisa ser alterado.


EDITAR:

Apenas para esclarecer, a configuração de LANGAUGE em / etc / default / locale não ajuda . Além disso, ~ / .pam_environment não existe.

Ver abaixo. LANGUAGE está definido como "en" em / etc / default / locale. Eu reiniciei a máquina. Eu verifiquei o conteúdo de / etc / default / locale. No entanto, o apt-get ainda produz saídas em russo porque LANGUAGE foi sobrescrito em outro local (produzindo a saída acima da localidade).

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:

Parece que ~ / .kde / env / setlocale.sh foi o responsável. Acho que vou registrar um relatório de bug do 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
fonte

Respostas:

5

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

Tão coxo quanto uma resposta de link, provavelmente é isso que você deseja.

A postagem mencionada no link acima explica que, se você quiser alterar o idioma que aparece na linha de comando, precisará definir ambos LANGe de LANGUAGEacordo com isso /etc/default/localeou em ~/.pam_environment.

Desde que você já tentou definir LANGUAGEem /etc/default/locale, eu tente defini-lo em ~/.pam_environmentuma vez que é um arquivo de configuração do usuário e seu conteúdo deve substituir conjunto qualquer coisa no ambiente global.

EDITAR:

Fui em frente e tentou duplicar o problema que você descreveu, definindo LANGUAGEem /etc/default/localeque "en:ru:en"sair e, em seguida, voltar a entrar na. Funcionou. As mensagens de erro foram exibidas em russo, pelo menos para a conta raiz (que era a conta em que eu estava testando isso). Alterando o valor de LANGUAGEpara "en"corrigi-lo.

Alexej Magura
fonte
Infelizmente, como observei, definir a variável em / etc / default / locale não é suficiente. (Veja a postagem original e a edição para esclarecimentos.) Aparentemente, a variável é substituída em algum lugar, e eu preciso saber onde está esse lugar.
lnmaurer
@lnmaurer eu sei. Você tentou configurá-lo ~/.pam_environment? Vi seu comentário sobre ele não existir. Você pode tentar grep LANGUAGE /etc -r | less, verificar e verificar manualmente cada instância do LANGUAGE. Além disso, certifique-se de verificar ~/.profilee~/.xsessionrc
Alexej Magura
2
Eu segui o seu conselho saudando. /etcapareceu nada, mas grepping meu diretório pessoal apareceu /.kde/env/setlocale.sh. Parece que esse foi o problema.
lnmaurer
1

Parece que você tem a LANGUAGEvariável definida como ru: en ou algo /etc/default/localeassim, então tente alterá-la para apenas en.

A resposta, que Alexej Magura escreveu, também menciona ~/.pam_environment. Possivelmente, como você possui o Kubuntu, outros arquivos podem estar envolvidos (ou também).

Gunnar Hjalmarsson
fonte
~ / .pam_environment não existe para mim. Quaisquer outros pensamentos sobre qual arquivo pode ser o culpado?
lnmaurer
@ lnmaurer: Possivelmente ~/.kde/share/config/kcmlocale-groupingtem algo a ver com isso. Pode ser alterado através de Configurações do sistema -> Localidade -> Idiomas.
Gunnar Hjalmarsson
1
Você está certo de que era algo específico do KDE. Parece que ~/.kde/env/setlocale.shfoi o problema.
lnmaurer