As configurações de localidade não estão corretas. Como posso redefini-los?

43

Eu tenho um problema de localidade.
A sequência de intercalação nautiluse outros programas mudou.
Eu recebo erros de localidade aparecendo no terminal quando inicio um aplicativo GUI.

    Gtk-WARNING **: Locale not supported by C library.
        Using the fallback 'C' locale.

O localecomando produz mensagens de erro

    locale: Cannot set LC_CTYPE to default locale: No such file or directory
    locale: Cannot set LC_ALL to default locale: No such file or directory
    LANG=en_AU
    LANGUAGE=en_AU:en
    LC_CTYPE="en_AU"
    LC_NUMERIC="en_AU"
    LC_TIME="en_AU"
    LC_COLLATE=en_AU.UTF-8
    LC_MONETARY="en_AU"
    LC_MESSAGES=en_AU.UTF-8
    LC_PAPER="en_AU"
    LC_NAME="en_AU"
    LC_ADDRESS="en_AU"
    LC_TELEPHONE="en_AU"
    LC_MEASUREMENT="en_AU"
    LC_IDENTIFICATION="en_AU"
    LC_ALL=

Como sugerido na pergunta askubuntu , executei os seguintes comandos, mas não houve alterações.

    sudo apt-get install language-pack-en-base
    sudo dpkg-reconfigure locales

Eu também tentei a sugestão na pergunta askubuntu ... também não mudou.

    apt-get install --reinstall locales

Eu acho que começou quando eu instalei e desinstalei temporariamente o Editor de método de entrada da linguagem Urdu via IBus.. certamente aconteceu no mesmo dia.

Talvez esteja relacionado ao IBus, mas nunca tive problemas com isso antes disso.

  • O sistema operacional é 10.04
Peter.O
fonte

Respostas:

27

Consegui fazer as coisas funcionarem "normalmente" novamente.

Depois de tentar várias reinstalações de pacotes, etc., incluindo a remoção total do IBus (tudo sem efeito), comecei a pensar que isso pode ser causado por uma configuração que a reinstalação não modifica.

Eu tinha notado que a saída de localeera bastante desprovida de atribuições UTF-8, então verifiquei isso em uma VM instalada recentemente ... todas as entradas de LC_ * (exceto LC_ALL, que substitui todas as outras) foram definidas com o .UTF-8sufixo. então eu defino manualmente os valores LC_ *, como mostrado abaixo.

Eu provavelmente poderia ter usado LC_ALL="en_AU.UTF-8", mas ao ler sobre isso, descobri como personalizar o formato de data e hora do sistema e LC_ALLsubstituiria minha configuração personalizada.

Não sei se usei o método mais apropriado, mas funciona!

O arquivo modificado é: /etc/default/locale

  • Isso mostra o conteúdo antes do mod:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_MESSAGES="en_AU.UTF-8"
    
  • Isso mostra o conteúdo após o mod:

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

O mesmo arquivo na VM continha apenas esta linha:

    LANG="en_AU.UTF-8" 

Peter.O
fonte
obrigado pelo seu post. Para o registro, tive que reiniciar meu sistema para que a correção funcionasse. (emacs talvez poderia ter usado Eval-tampão?)
David LeBauer
19

Redefinir os códigos de idioma e reconfigurar pode ser suficiente para corrigir o problema:

sudo locale-gen en_AU.UTF-8
sudo dpkg-reconfigure locales

Ao executar, sudo dpkg-reconfigure localesvocê pode selecionar o código do idioma desejado clicando spacebare movendo-se com e antes de pressionar Enter.

Guillaume Vincent
fonte
Talvez valha a pena mencionar que você seleciona os idiomas que deseja com a barra de espaço.
Daniel Kmak 31/07
@ Daniel Eu não entendo: barra de espaço?
Guillaume Vincent
1
Ao executar, dpkg-reconfigurevocê obtém a lista com caixas de seleção e, para selecionar o idioma, é necessário usar a barra de espaço. Não existe essa informação no programa do console, então pensei que ajudaria a escrevê-la com a resposta. Eu não sabia como selecionar esses idiomas.
Daniel Kmak 31/07
1
@Daniel done :)
Guillaume Vincent
15

Eu também encontrei esse problema, como você vê, o seu LC_ALLestá vazio. Fiz o seguinte e ajuda:

$ sudo vim /etc/environment

e definir o LC_ALLalgo como en_US.UTF-8, o meu é:

LANG="en_US.UTF-8"
LC_MESSAGES="C"
LC_ALL="en_US.UTF-8"

reinicie e execute locale, e deve ser algo como:

LANG=zh_CN.utf8
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=en_US.UTF-8
McKelvin
fonte
Esta solução funciona bem no Ubuntu 12.04 LTS preciso
speciousfool
A configuração LC_ALLé desencorajada. "O uso de LC_ALL é altamente desencorajado, pois substitui tudo. Use-o apenas durante o teste e nunca o configure em um arquivo de inicialização." wiki.debian.org/Locale
gertvdijk
4

Se você estiver conectado remotamente à máquina através do ssh (por exemplo, de um dispositivo macosx), precisará definir essas variáveis ​​na máquina da qual está conectando.

adicione o seguinte a ~ / .bash_profile

#fix for locale issues when connecting to ubuntu servers
export LANG="en_US.utf8"
export LANGUAGE="en_US.utf8"
export LC_ALL="en_US.utf8"
Somatik
fonte
1
Isso é uma falha conhecida ao conectar-se a partir do OS X?
MindTooth
nenhuma idéia se isso é por design ou uma falha / erro
Somatik
2

Eu só quero adicionar que eu também precisava editar meu perfil doméstico:

gedit ~/.profile

Portanto, no seu caso, seria semelhante a:

...
LANG="en_AU.UTF-8"
LANGUAGE="en_AU:en"

Sair + Entrar. E tudo está como o esperado.

Aas
fonte
Eu precisava exportno início de cada linha e a coloquei ~/.bashrc.
Sparhawk
2

Eu tive o mesmo problema por vários meses, muitas ferramentas de software alertaram sobre configurações de localidade quebradas e algumas até se recusaram a executar. Quero usar o idioma inglês, mas as configurações monetárias e de números suecas.

O que finalmente funcionou para mim foi editar /etc/default/localeonde removi tudo naquele arquivo. Comecei então a configuração do idioma do Unity (Settings -> Language Support), configurei tudo (o Ubuntu queria instalar alguns componentes ausentes) e pressionei "Apply System-wide"quando terminei.

Meu /etc/default/localeagora é assim.

LC_NUMERIC = "sv_SE.UTF-8"
LC_TIME = "sv_SE.UTF-8"
LC_MONETARY = "sv_SE.UTF-8"
LC_PAPER = "sv_SE.UTF-8"
LC_IDENTIFICATION = "sv_SE.UTF-8"
LC_NAME = "sv_SE.UTF-8"
LC_ADDRESS = "sv_SE.UTF-8"
LC_TELEPHONE = "sv_SE.UTF-8"
LC_MEASUREMENT = "sv_SE.UTF-8"
LANGUAGE = "pt"
LANG = "pt_BR.UTF-8"

A grande diferença entre este e meu arquivo original é LANGUAGE="en".

David A
fonte
Meu protetor de vida ...
John Joe
2

Já faz um tempo desde que isso foi publicado, mas recentemente tive problemas com variáveis ​​"locale" e nenhuma resposta me deu nenhum resultado. Talvez minha própria experiência possa ajudar outra pessoa.

Minha variável LANG estava vazia e isso estava me causando problemas.

$locale

Resultado:

LANG=
LANGUAGE=en_US
LC_CTYPE=POSIX
LC_NUMERIC=POSIX
LC_TIME=POSIX
LC_COLLATE=POSIX
LC_MONETARY=POSIX
LC_MESSAGES=POSIX
LC_PAPER=POSIX
LC_NAME=POSIX
LC_ADDRESS=POSIX
LC_TELEPHONE=POSIX
LC_MEASUREMENT=POSIX
LC_IDENTIFICATION=POSIX
LC_ALL=POSIX

Eu tentei alguns dos comandos como:

sudo locale-gen
sudo dpkg-reconfigure locales

Sem sucesso. Tentei editar o / etc / default / locale e descobri que já estava OK:

$cat /etc/default/locale

Resultado:

LANG=en_US.UTF-8
LC_NUMERIC="es_CO.UTF-8"
LC_TIME="es_CO.UTF-8"
LC_MONETARY="es_CO.UTF-8"
LC_PAPER="es_CO.UTF-8"
LC_NAME="es_CO.UTF-8"
LC_ADDRESS="es_CO.UTF-8"
LC_TELEPHONE="es_CO.UTF-8"
LC_MEASUREMENT="es_CO.UTF-8"
LC_IDENTIFICATION="es_CO.UTF-8"

Também meu arquivo .pam_environment parecia estar correto:

$cat .pam_environment

Resultado:

LANGUAGE=en_US:en
LANG=en_US.UTF-8
LC_NUMERIC=es_CO.UTF-8
LC_TIME=es_CO.UTF-8
LC_MONETARY=es_CO.UTF-8
LC_PAPER=es_CO.UTF-8
LC_NAME=es_CO.UTF-8
LC_ADDRESS=es_CO.UTF-8
LC_TELEPHONE=es_CO.UTF-8
LC_MEASUREMENT=es_CO.UTF-8
LC_IDENTIFICATION=es_CO.UTF-8
PAPERSIZE=letter

Não quero adicionar coisas extras ao perfil ou aos arquivos do bash, principalmente porque, embora isso pudesse resolver o problema, eu não saberia a causa e isso me incomodou.

Finalmente, me perguntei se algo já estava substituindo as variáveis ​​"locale" e executei o próximo comando:

$cat .bashrc | grep LANG

Resultado:

unset LANG

Então, encontrei duas linhas no meu arquivo .bashrc onde estava a causa (não estou colando o arquivo inteiro):

unset LANG
export LC_ALL=POSIX

Não sei como ou quando essas linhas acabaram no meu arquivo bash, mas tenho certeza absoluta de que não as escrevi, talvez o meu .bashrc tenha sido substituído quando eu estava trabalhando com algumas coisas de desenvolvimento da Web, realmente sei, mas como sei que isso não foi intencional e há pessoas por aí sem nenhuma pista sobre o que está causando o mau comportamento do "locale", talvez isso possa ajudá-los. Enfim, comentar essas linhas e uma reinicialização resolveram o problema para mim. Aqui eu respondi a mesma pergunta focada em reclamações sublimeT3 sobre a variável LANG .

smajtkst
fonte
1

Parece uma atualização localidades fritas de alguma forma. A correção que encontrei foi sair, alterar o idioma selecionado antes de fazer login e fazer login novamente.

Também pode ajudar a reinstalar os códigos de idioma no synaptic, embora eu não possa confirmar que foi isso que o corrigiu para mim, acho que estava saindo do sistema ou algo assim.

RolandiXor
fonte
Reinicie e altere o idioma. Na verdade, não vejo nenhuma maneira de alterar o idioma no logon. Vejo um texto que menciona a alteração do idioma, mas não há opção (botões ou similares) .. talvez seja porque eu só tenho o inglês australiano ativado ... e corri todos os comandos acima .. por isso é stil um mistério no momento ...
Peter.O
@ red.bear: tente instalar language-pack-ene language-support-en, em seguida, repita o processo acima.
RolandiXor
1

Tentei editar o arquivo de localidade e escolher diferentes idiomas no login.

A filtragem de pacotes quebrados com o Synaptic e a remoção completa dos 9 pacotes incorretos funcionaram para mim (libreoffice e python uno).

Mas não consigo instalar o LibreOffice sem aparentemente corromper o gerenciador de pacotes. No entanto, ele é instalado.

Estou no 11.04 i386. Isenção de responsabilidade: Houve uma falha de energia durante a última parte da minha instalação, pois o Ubuntu estava baixando atualizações.

marajit
fonte
1

Eu tive o mesmo problema, mas ir para Sistema> Administração> Suporte a idiomas pode resolver seu problema, pois pode solicitar que você instale alguns pacotes e tudo ficará bem! Funcionou para mim, então acho que fará o mesmo com você !!

Nickolas Pylarinos
fonte
0

Corre

export LC_ALL="zh_CN.utf8"
ibus-setup

e selecione uma das opções para o método de entrada que desejar.

mobeyond
fonte
0

Eu tive um problema semelhante (mais perceptível no Thunderbird) ao exemplo en_AU aqui - mas sou do en_NZ - e após algumas tentativas e erros no Ubuntu 17.10, minha correção foi atualizar ~ / .pam_environment, substituindo todas as outras entradas ( principalmente en_AU e en_US) com en_NZ e depois reinicializando.

Uma pena que você não possa simplesmente definir seu código de idioma e fazê-lo fazer o que ele afirma fazer - muito decepcionado que o fato de executar os códigos de idioma dpkg-configure não pareça realmente útil.

BlakJak
fonte