Por que a substituição da variável de ambiente LANG não está alterando o idioma para mim?

11

Estou tentando executar um aplicativo em outro idioma como o meu ambiente atual. Para começar simples, eu queria mudar o idioma de ls.

Aqui está o que eu li em todo o lugar (veja abaixo as perguntas relacionadas): defina LANGcomo um dos locais suportados, por exemplo:

LANG=nl_NL.UTF-8 ls /nonexistent

para mostrar a saída holandesa (NL).

No entanto, ainda recebo a saída em inglês:

$ LANG=nl_NL.UTF-8 ls -al /nonexistent
ls: cannot access /nonexistent: No such file or directory

Meu ambiente atual:

$ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=

Para ter certeza, verifiquei:

  • O código do idioma é suportado:

    $ grep nl_NL /usr/share/i18n/SUPPORTED 
    nl_NL.UTF-8 UTF-8
    nl_NL ISO-8859-1
    nl_NL@euro ISO-8859-15
    
  • O código do idioma é gerado:

    sudo locale-gen nl_NL.UTF-8
    

    e sudo dpkg-reconfigure localestambém mostra que é gerado.

  • Instalou o pacote de idiomas holandês (já instalado):

    sudo apt-get install language-pack-nl
    

O que mais eu tentei?

  • Usando exportpara definir ambos LANGe em LANGUAGEvez de anexar o comando novamente.
  • Definindo também LC_ALL.

Ironicamente, alguns (apenas alguns!) Aplicativos da GUI estão realmente em holandês, mas eu ainda não o configurei!

insira a descrição da imagem aqui

Estou no Kubuntu 12.04 (.2), ​​tanto quanto isso importa.

Perguntas semelhantes (sem sucesso):

O que há de errado no meu sistema? Onde depurar isso ainda mais?

gertvdijk
fonte

Respostas:

12

Porque LANGUAGE, que tem precedência sobre LANG, está definido e inalterado.

$ LANGUAGE=nl ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet

Mais informações estão na documentação do GNU gettext :

O GNU gettext dá preferência a LANGUAGE sobre LC_ALL e LANG para fins de tratamento de mensagens, mas você ainda precisa ter LANG (ou LC_ALL) definido no idioma principal; isso é requerido por outras partes das bibliotecas do sistema.

Gunnar Hjalmarsson
fonte
Eu juro que já tentei isso. No entanto, olhando para o meu histórico de shell, acho que é porque eu só tentei isso antes de gerar o código do idioma. Você poderia incluir uma fonte sobre por que "LANGUAGE tem precedência sobre LANG"? Obrigado pela atenção.
gertvdijk