python - 语言环境问题

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

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

最佳答案

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

active 语言环境,即实际使用的语言环境,由 locale.getlocale() 返回,如果您在显式设置语言环境之前运行它,您将看到它返回(None, None)(表示没有设置语言环境。)如果您希望应用程序使用环境指定的默认语言环境,则必须调用 locale.setlocale(locale. LC_ALL, '')。 (空字符串表示“默认值”,不幸的是它不同于 None 或不传递参数。)

关于python - 语言环境问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9829099/

相关文章:

python - Sqlalchemy 包含带有 join 和 contains_eager 的空关系

python - 使用 Python 的 QUOTE_NONNUMERIC 导入的 csv 无法按预期工作

android - Delphi TFormatSettings 的输出不正确,在 Windows 中可以,但在 Android 中不行

Delphi - 未声明的标识符 : LOCALE_SYSTEM_DEFAULT

Java NumberFormat : Missing Currency Symbols for Portugal, 卢森堡等

python - 找出 Redis 数据库中键的最大字符串值大小

python - 在 Windows 上安装 Anaconda

python - 优化 Django : nested queries vs relation lookups

javascript - 数字 : any way to determine the locale?

android - 防止数字在语言环境更新的 android 上从英语更改为阿拉伯语