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

9

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

Veja o que eu li em todo o lugar (veja abaixo as perguntas relacionadas): defina LANG como um dos locais suportados, por exemplo:

LANG=nl_NL.UTF-8 ls /nonexistent

para mostrar a saída holandesa (NL).

No entanto, ainda recebo resultados 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:

  • A localidade é suportada:

    $ grep nl_NL /usr/share/i18n/SUPPORTED 
    nl_NL.UTF-8 UTF-8
    nl_NL ISO-8859-1
    nl_NL@euro ISO-8859-15
    
  • A localidade é gerada:

    sudo locale-gen nl_NL.UTF-8
    

    e sudo dpkg-reconfigure locales também mostram que é gerado.

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

    sudo apt-get install language-pack-nl
    

O que mais eu tentei?

  • Usando export para definir LANG e LANGUAGE em vez de prefixar o comando.
  • Definindo também LC_ALL .

Ironicamente, alguns (apenas alguns!) aplicativos GUI estão em holandês, mas eu não configurei nada disso!

Eu estou no Kubuntu 12.04 (.2), até onde isso importa.

Perguntas similares (sem sucesso):

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

    
por gertvdijk 23.06.2013 / 16:41

1 resposta

11

Porque LANGUAGE, que tem precedência sobre LANG, é 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 gettext do GNU dá preferência a LANGUAGE sobre LC_ALL e LANG para o propósito de manipulação de mensagens, mas você ainda precisa ter LANG (ou LC_ALL) configurado para o idioma principal; isso é exigido por outras partes das bibliotecas do sistema.

    
por Gunnar Hjalmarsson 23.06.2013 / 17:58