我有一个python程序(jrnl),它应该以德语文本打印星期几。但是,它始终打印英文名称。
以下是locale
的输出:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=
您可以看到LC_TIME
设置为de_DE.UTF-8
。但是当我启动python时,这个语言环境没有设置:
>>> import locale
>>> locale.getlocale(locale.LC_TIME)
(None, None)
所以我的工作日用英文显示:
>>> from time import gmtime, strftime
>>> strftime("%A, %d %b %Y %H:%M:%S +0000", gmtime())
'Monday, 15 Jan 2018 20:22:30 +0000'
如何让python使用系统区域设置?
答案 0 :(得分:5)
来自locale
module background documentation:
最初,当程序启动时,无论用户的首选语言环境是什么,语言环境都是
C
语言环境。
您需要使用locale.setlocale()
显式设置区域设置;使用空字符串表示需要使用用户配置:
locale.setlocale(locale.LC_TIME, '')
这是标准行为;无论环境变量如何,底层C级语言环境系统explicitly starts in the C
locale,因为您不能假设当前程序实际上需要或需要遵守用户设置。