现场问题

Ale*_*Vhr 1 python locale

win32上的Python 2.7.2(默认,2011年6月12日,14:24:46)[MSC v.1500 64位(AMD64)].

>>> locale.getdefaultlocale()
('ru_RU', 'cp1251')  #ok, Russian locale is set, as per user settings
>>> a  = datetime.date.today()
>>> a.strftime("%B %d")
March 22' #ouch, that's not Russian.
>>> locale.setlocale(locale.LC_ALL, 'russian_russia')
'Russian_Russia.1251'
>>> a.strftime("%B %d")
'???? 22' #now it's ok
Run Code Online (Sandbox Code Playgroud)

那么......为什么不重置默认语言环境不行呢?它与操作系统有关吗?有办法做某事locale.setlocale(convert_it_somehow(locale.getdefaultlocale()))吗?我想要做的就是根据用户的偏好显示日期.谢谢!

Tho*_*ers 9

实现有关区域设置的事情是,Python中,作为一种编程语言实现,而不是一个应用程序,不能假定环境是否区域设置(通过LANGLC_*环境变量)应适用于用Python编写与否的程序.因此,Python不设置区域设置.你的程序必须明确地这样做.Python做解析语言环境变量对你来说,这就是locale.getdefaultlocale()返回:默认语言环境由环境规定.

活动的场所,实际使用的一个,被退回locale.getlocale()的,如果您运行之前明确设置的语言环境,你会看到它返回(None, None)(表示没有区域设置.)如果你想你的使用由指定的默认语言环境的应用程序环境,你必须打电话locale.setlocale(locale.LC_ALL, '').(空字符串的意思是"无论是默认的",并且是不幸不同None或不及格的说法.)