Python - localidade padrão não está funcionando

2

Esta é a situação:

In [1]: import datetime

In [2]: import locale

In [3]: locale.getlocale()
Out[3]: ('es_ES', 'UTF-8')

In [4]: locale.getdefaultlocale()
Out[4]: ('es_ES', 'UTF-8')

In [5]: datetime.datetime.strftime(datetime.datetime.today(), '%B')
Out[5]: 'July'

Mas a saída deve ser julio

Se eu definir a localidade, então funciona

In [6]: locale.setlocale(locale.LC_ALL, 'es_ES.UTF8')
Out[6]: 'es_ES.UTF8'

In [7]: datetime.datetime.strftime(datetime.datetime.today(), '%B')
Out[7]: 'julio'

Isso acontece tanto no Python2 (2.7.10) quanto no Python3 (3.5.0 +)

A localidade do sistema está definida para espanhol

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

EDITAR:

Vendo a saída locale , percebi que LC_ALL não estava definido. Eu verifiquei /etc/default/locale como é sugerido aqui e eu encontrei uma mistura de localidades.

LANG="es_ES.UTF-8"
LC_ALL=
LC_NUMERIC="nl_NL.UTF-8"
LC_TIME="nl_NL.UTF-8"
LC_MONETARY="nl_NL.UTF-8"
LC_PAPER="nl_NL.UTF-8"
LC_NAME="nl_NL.UTF-8"
LC_ADDRESS="nl_NL.UTF-8"
LC_TELEPHONE="nl_NL.UTF-8"
LC_MEASUREMENT="nl_NL.UTF-8"
LC_IDENTIFICATION="nl_NL.UTF-8"

Talvez porque eu tenha atualizado de 15.04 a 15.10 ?. Enfim, eu preenchi LC_ALL e mudei o resto das variáveis para es_ES , executando novamente locale-gen como root. No entanto, mesmo depois de reiniciar o sistema, a situação é a mesma.

    
por Manuel 06.07.2016 / 10:44

1 resposta

0

Normalmente, você não deve definir LC_ALL persistentemente como uma variável de ambiente global. Se você fizer isso em uma área de trabalho, tornará as GUIs para definir idiomas / locais inúteis.

No que diz respeito ao seu programa em Python, você precisa desta linha:

locale.setlocale(locale.LC_ALL, '')

Faz a localidade, ou seja, a saída do comando locale , efetiva dentro do programa Python.

    
por Gunnar Hjalmarsson 06.07.2016 / 17:11