这是这种情况:
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'
但输出应该是julio
如果我设置语言环境,那么它可以工作
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'
它发生在 Python2 (2.7.10) 和 Python3 (3.5.0+) 中
系统区域设置为西班牙语
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=
编辑:
看到locale
输出,我意识到没有设置 LC_ALL。我按照这里的建议进行了检查,/etc/default/locale
发现了多种语言环境。
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"
也许是因为我从 15.04 更新到 15.10?无论如何,我填充LC_ALL
并将其余变量更改为es_ES
,再次locale-gen
以root身份执行。但是,即使在重新启动系统后,情况也是如此。
通常,您不应将其
LC_ALL
永久设置为全局环境变量。如果您在桌面上执行此操作,则会使用于设置语言/区域设置的 GUI 变得无用。至于你的 Python 程序,你需要这一行:
它使语言环境(即
locale
命令的输出)在 Python 程序中有效。