Por que obtenho o seguinte erro ao fazer isso em python:
>>> import locale
>>> print str( locale.getlocale() )
(None, None)
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/locale.py", line 531, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
Isso funciona com outros locais como fr ou nl também. Estou usando o Ubuntu 11.04.
Atualização: O procedimento a seguir não produziu nada:
dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
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
python
locale
ubuntu-11.04
toom
fonte
fonte
de_DE
listalocale -a
? Caso contrário, você deve instalá- lo.locale.setlocale(locale.LC_ALL, 'de_DE')
está errado. Você precisalocale.setlocale(locale.LC_ALL, 'de_DE.utf8')
.locale.setlocale(locale.LC_ALL, locale.locale_aliases['de_DE'])
.Respostas:
Execute os seguintes comandos
Isso resolverá isso.
Certifique-se de combinar a
.UTF-8
peça com a sintaxe real encontrada na saída, porlocale -a
exemplo,.utf8
em alguns sistemas.fonte
export LC_ALL="en_US.UTF-8"
falhou com-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
O que funcionou estava fazendo isso: #export LC_ALL=C
De acordo com este link , ele foi resolvido digitando este comando:
fonte
LC_ALL
para o valor'C'
- mas por que isso deveria funcionar?Você provavelmente não tem nenhum
de_DE
código de idioma disponível.Você pode visualizar uma lista de códigos de idioma disponíveis com o
locale -a
comando Por exemplo, na minha máquina:Observe que, se você deseja definir o código do idioma,
it_IT
também deve especificar.utf8
:Para instalar um novo código de idioma, use:
onde
id
está o código do idioma (extraído daqui )Depois de instalar o código de idioma, siga as orientações de Julien Palard e reconfigure os códigos de idioma com:
fonte
Uma das respostas acima fornece a solução:
O problema com a solução acima é que isso deve ser feito no shell do linux. No entanto, se você estiver fornecendo seu código para trabalhar na máquina cliente, essa é uma abordagem ruim. Eu também tentei executar os comandos acima usando os.system (), mas ainda assim não funciona.
A solução que funcionou para mim é
fonte
Uma solução mais permanente seria preencher os valores ausentes, na saída mostrada pelo comando:
locale
A saída de
locale
é:Para preencher os valores ausentes, edite ~ / .bashrc:
Adicione as seguintes linhas após o comando acima (suponha que você queira que o en_US.UTF-8 seja o seu idioma):
Se este arquivo for ReadOnly, você precisará seguir as etapas mencionadas pelo The GeekyBoy . A resposta dada pelo Dr. Beco no Superusuário tem detalhes relacionados ao salvamento de arquivos somente leitura.
Depois de salvar o arquivo, faça:
Agora você não estará mais enfrentando o mesmo problema.
fonte
Se você estiver em um Debian (ou fork do Debian), poderá adicionar localidades usando:
fonte
dpkg-reconfigure locales
traz para você um menu de escolha local como este: vpser.net/uploads/2013/01/dpkg-reconfigure-locales-1.jpg ?No Arch Linux, eu era capaz de corrigir isso executando
sudo locale-gen
fonte
Para constar, eu tive o mesmo problema, mas nenhuma das soluções funcionou. Eu havia atualizado meu computador e migrado meu PC. Eu tinha um código de idioma misto inglês e espanhol:
Mas, na minha nova instalação Debian, acabei de selecionar inglês como local. O que finalmente funcionou foi reconfigurar o pacote de localidades para adicionar e gerar espanhol também.
fonte
Basta abrir o arquivo .bashrc e adicionar este
e digite source .bashrc no terminal
fonte
Você erro diz claramente, você está tentando usar localidade algo não estava lá.
locale.Error: configuração de local não suportada
Para verificar as configurações disponíveis, use
locale -a
então você pode usar um dentre
para
de_DE
Esse arquivo pode ser ajustado manualmente ou atualizado usando a ferramenta update-locale.
fonte
locale
para obter qual localidade é usada. Tal como:/etc/locale-gen
arquivo. Descomente os usadoslocale-gen
para gerar localidades recém-adicionadasfonte
Na minha opinião, a maneira mais fácil de configurar o código do idioma local em python {, 3} é:
Então, as coisas com reconhecimento de localidade simplesmente funcionam, se você estiver em uma distribuição Linux decente, e também deve funcionar com distribuições binárias de outros sistemas operacionais (ou isso é um bug IMHO).
fonte
Coloque-o
Dockerfile
acima doENV
.fonte
locale
no terminal, obtém `LANG = pt_BR.UTF-8 e outro código do idioma? stackoverflow.com/questions/36394101/…Este erro pode ocorrer, se você acabou de adicionar um novo código de idioma. Você precisa reiniciar o shell interativo python (
quit(
) epython
) para obter acesso a ele.fonte
Se eu fosse você, usaria BABEL: http://babel.pocoo.org/en/latest/index.html
Eu tive o mesmo problema aqui usando o Docker, tentei todas as etapas e não funcionou bem, sempre obtendo erros de localidade, então decidi usar o BABEL e tudo funcionou bem.
fonte
Ao tentar fazer o python cuspir nomes em localidades específicas, cheguei aqui com o mesmo problema.
Ao buscar a resposta, as coisas ficaram um pouco místicas.
Eu encontrei esse código python.
E de fato
locale.setlocale(locale.LC_TIME, 'en_DK.UTF-8')
funcionaUsando dicas aqui, testei mais para ver o que está disponível usando o código python
que produz
Dos quais apenas acima está funcionando! Mas o
en_DK.UTF-8
não está nesta lista, embora funcione!?!? O que?? E a lista de localizações geradas em python contém muitos combos de da e DK, o que estou procurando, mas novamente não há UTF-8 para da / DK ...Estou em uma distro do Point Linux (baseada no Debian), e aqui
locale
diz, entre outras coisasLC_TIME="en_DK.UTF-8"
, que eu sei que funciona, mas não o local que eu preciso.locale -a
dizEntão, definitivamente, preciso instalar outro código do idioma , o que eu fiz editando
/etc/locale.gen
, descomente a linha necessáriada_DK.UTF-8 UTF-8
e execute o comandolocale-gen
Agora
locale.setlocale(locale.LC_TIME, 'da_DK.UTF-8')
também funciona, e posso obter meus nomes localizados de dia e mês.Minha conclusão:
Python: locale.locale_alias não ajuda em nada a encontrar localidades disponíveis !!!
Linux: É muito fácil obter a lista de localidades e instalar uma nova localidade. Muita ajuda disponível.
Windows: Eu tenho investigado um pouco, mas nada conclusivo. No entanto, existem posts que levam a respostas, mas não senti vontade de prosseguir.
fonte
se bem entendi, a principal fonte de erro aqui é a sintaxe exata do nome do código do idioma. Especialmente porque parece diferir entre distribuições. Eu já vi mencionado aqui em diferentes respostas / comentários:
Mesmo que isso seja obviamente o mesmo para um ser humano, o mesmo não se aplica ao seu algoritmo determinístico padrão.
Então você provavelmente fará algo como:
fonte
python procura por .UFT-8, mas você provavelmente tem .utf8 tente instalar os pacotes .UFT-8 com os códigos de idioma sudo dpkg-reconfigure
fonte
primeiro, verifique se você tem o pacote de idiomas instalado fazendo:
fonte