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

6

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

Antecedentes: 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. O melhor que posso imaginar, é 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á configurado corretamente, exceto para LANGUAGE. Já passei por várias instruções sobre como configurar o idioma / idioma, mas nada parece alterar o LANGUAGE (embora tenham alterado outras variáveis ambientais, como o LANG). Portanto, não estou interessado em uma visão geral de como alterar a localidade. Eu preciso saber especificamente como alterar LANGUAGE (a menos que eu esteja totalmente entendendo mal a situação). Por que vale a pena, o LANG é definido em / etc / default / locale, mas o LANGUAGE não está definido lá. (Eu tentei definir LANGUAGE lá, e ele é substituído de alguma forma.) Se eu definir manualmente LANGUAGE para en, então esse shell em particular funciona bem, então acho que apenas LANGUAGE precisa ser alterado.

EDITAR:

Só para deixar claro, configurar o LANGAUGE em / etc / default / locale não ajuda . Além disso, ~ / .pam_environment não existe.

Veja 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 o LANGUAGE foi sobrescrito em outro lugar (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 culpado. Eu acho que vou arquivar 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
    
por lnmaurer 27.12.2014 / 02:58

2 respostas

2

Extraído 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 lame quanto uma resposta de link é, this é provavelmente o que você quer.

A postagem mencionada no link acima explica que, se você quiser alterar o idioma exibido na linha de comando, será necessário definir LANG e LANGUAGE de acordo com /etc/default/locale ou ~/.pam_environment .

Como você já tentou definir LANGUAGE em /etc/default/locale , eu tentei defini-lo em ~/.pam_environment , pois esse é um arquivo de configuração do usuário e seu conteúdo deve substituir qualquer coisa definida no ambiente global.

EDITAR:

Eu fui em frente e tentei duplicar o problema que você descreveu definindo LANGUAGE em /etc/default/locale para "en:ru:en" efetuando logout e, em seguida, efetuando login novamente. 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). Alterar o valor de LANGUAGE para "en" corrigiu.

    
por Alexej Magura 27.12.2014 / 07:10
1

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

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

    
por Gunnar Hjalmarsson 27.12.2014 / 12:31