【问题标题】:Locale troubles语言环境问题
【发布时间】:2023-03-27 23:43:01
【问题描述】:

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 locale


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      相关资源
      最近更新 更多