似乎什么也没有保存。我假设您一次设置语言环境是错误的,然后系统会记住这一点
是的,
locale.setlocale()使用Python调用不会影响以后的
python过程。而是配置环境变量,请参阅如何在Ubuntu中设置所有语言环境设置。
Bash的“日期”方法似乎以某种方式选择了语言环境。
date首先调用
setlocale(LC_ALL,""),即您需要每个进程至少调用
setlocale()一次以启用
$LANG语言环境而不是
Clocale。
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)'Вторник'
在指定的语言环境中打印工作日而不修改全局状态的一种可移植方式是使用
babelmodule:
>>> 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'



