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
所以...为什么不重置默认语言环境就不能工作?它与操作系统有关吗?有没有办法做类似 locale.setlocale(convert_it_somehow(locale.getdefaultlocale()))
的事情?我想要做的就是根据用户的喜好显示日期。谢谢!
最佳答案
关于区域设置的一点是,Python 作为一种编程语言实现而不是应用程序,不能假定环境区域设置(通过 LANG
和 LC_*
环境变量)是否应该应用于用 Python 编写的程序。所以,Python 不设置语言环境。你的程序必须明确地这样做。 Python 会为您解析语言环境变量,这就是 locale.getdefaultlocale()
返回的内容:环境指定的默认语言环境。
active 语言环境,即实际使用的语言环境,由 locale.getlocale()
返回,如果您在显式设置语言环境之前运行它,您将看到它返回(None, None)
(表示没有设置语言环境。)如果您希望应用程序使用环境指定的默认语言环境,则必须调用 locale.setlocale(locale. LC_ALL, '')
。 (空字符串表示“默认值”,不幸的是它不同于 None
或不传递参数。)
关于python - 语言环境问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9829099/