【问题标题】:OS locale support for use in Python在 Python 中使用的操作系统语言环境支持
【发布时间】:2010-11-18 14:24:20
【问题描述】:

以下 Python 代码适用于我的 Windows 机器 (Python 2.5.4),但不适用于我的 Debian 机器 (Python 2.5.0)。我猜它取决于操作系统。

import locale
locale.setlocale( locale.LC_ALL, 'English_United States.1252' )

我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.5/locale.py", line 476, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

问题:

  • 它是否依赖于操作系统?
  • 如何找到支持的语言环境 在 Python 中列出?
  • 如何在 Windows 之间进行匹配 语言环境和 Debian 语言环境?

【问题讨论】:

  • 您必须对语言环境进行硬编码吗? setlocale(LC_ALL, "") 将加载环境定义的语言环境。

标签: python locale


【解决方案1】:

它取决于操作系统。

要获取本地可用列表,您可以在 shell 中使用 locale -a

我认为你想要的本地是Windows-1252

【讨论】:

  • windows 中没有 locale -a
【解决方案2】:

试试

apt-get install locales-all

对我来说,它就像一个魅力

【讨论】:

  • 如果您想有选择地配置语言环境,这也很有帮助:tlug.dnho.net/node/237
  • 如果您想更有选择性,您可以安装其中一个 language-pack-* 软件包,例如语言包de。
  • 你知道 yum 的模棱两可是什么吗? yum install locales-all 不起作用。
【解决方案3】:

查看locale.locale_alias 字典。

>>> import locale
>>> len(locale.locale_alias)
789
>>> locale.locale_alias.keys()[:5]
['ko_kr.euc', 'is_is', 'ja_jp.mscode', 'kw_gb@euro', 'yi_us.cp1255']
>>> 

(在我的 2.6.2 安装中,有 789 个语言环境名称。)

【讨论】:

  • 其实别名字典中定义的locales不一定支持。
  • 我尝试了一个变体,它是 list(set(locale.locale_alias.values()) (值而不是键,因为我想要真正的值,然后再转换为 set 和 list 以仅保留唯一值)。但是,这里提出了另一个问题 (stackoverflow.com/questions/1728376/…):是否存在没有别名且根本不在别名字典中的语言环境?
【解决方案4】:

在 Ubuntu 上精确类型

sudo locale-gen en_US

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 2020-04-05
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    相关资源
    最近更新 更多