Skip to main content
 首页 » 编程设计

python之语言环境问题

2025年05月04日9虾米哥

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 或不传递参数。)