似乎什么也没有保存。我假设您一次设置语言环境是错误的,然后系统会记住这一点
是的,locale.setlocale()
使用Python调用不会影响以后的python
过程。而是配置环境变量,请参阅如何在Ubuntu中设置所有语言环境设置。
Bash的“日期”方法似乎以某种方式选择了语言环境。
date
首先调用setlocale(LC_ALL,"")
,即您需要每个进程至少调用setlocale()
一次以启用$LANG
语言环境而不是C
locale。
setlocale(LC_ALL, '')``$LANG
首先根据变量设置语言环境$LANGUAGE
(它是相关的,但有所不同: “ GNU gettext搜索路径按该顺序包含’LC_ALL’,’LC_CTYPE’,’LANG’和’LANGUAGE’。”)。
设置LC_TIME
类别就足够了(在Ubuntu上):
>>> import locale
>>> import time
>>> time.strftime('%A')
'Tuesday'
>>> locale.getlocale(locale.LC_TIME)
('en_US', 'UTF-8')
>>> locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8')
'ru_RU.UTF-8'
>>> time.strftime('%A')
'Вторник'
>>> locale.getlocale(locale.LC_TIME)
('ru_RU', 'UTF-8')
如果setlocale()
尚未引发,locale.Error: unsupported locale setting
则成功设置了相应的语言环境类别。
您还可以知道工作日的位置(在更改语言环境的同一python会话中):
>>> import calendar
>>> calendar.day_name[1]
'Вторник'
>>> locale.nl_langinfo(locale.DAY_3)
'Вторник'
在指定的语言环境中打印工作日而不修改全局状态的一种可移植方式是使用babel
module:
>>> from datetime import date
>>> from babel.dates import format_date # $ pip install babel
>>> format_date(date.today(), format='EEEE', locale='en')
'Tuesday'
>>> format_date(date.today(), format='EEEE', locale='ru')
'вторник'
>>> format_date(date.today(), format='EEEE', locale='nl')
'dinsdag'