2012-03-22 141 views
1

Python 2.7.2(默认,2011年6月12日,14:24:46)[MSC v.1500 64位(AMD64)]在win32上。区域设置问题

>>> 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 

所以......为什么不重新设置默认语言环境不工作?它与操作系统相关吗?有没有办法像locale.setlocale(convert_it_somehow(locale.getdefaultlocale()))这样做?我想要做的就是根据用户的喜好显示日期。谢谢!

回答

8

要实现有关语言环境的一点是,Python作为一种编程语言实现而不是应用程序,不能假定环境区域设置(通过LANGLC_*环境变量)是否应应用于写入的程序Python与否。所以,Python不会设置语言环境。你的程序必须明确地这样做。 Python会为您解析语言环境变量,这就是locale.getdefaultlocale()返回的内容:由环境指定的默认语言环境。

活跃语言环境,实际使用的一个,是由locale.getlocale()如果你想回来,如果你运行之前明确设置地方你会看到它返回(None, None)(指示没有区域设置。)您的应用程序使用环境指定的默认语言环境,则必须致电locale.setlocale(locale.LC_ALL, '')。 (空字符串表示“无论是默认值”,不幸的是与None不同或者没有通过该参数。)