如何在python控制台中列出所有可用的Windows语言环境?

min*_*als 25 python locale

在linux上,我们可以locale -a用来查看可用的语言环境列表.

$ locale -a
C
C.UTF-8
en_US.utf8
POSIX 
Run Code Online (Sandbox Code Playgroud)

是否有可能从Windows上的python控制台做同样的事情?

当您尝试执行操作locale.setlocale(locale.LC_ALL, '???')并且根本不知道区域设置值的名称时,这可能很方便.

dev*_*ull 28

>>> import locale
>>> locale.locale_alias
Run Code Online (Sandbox Code Playgroud)

  • 要明确:来自`locale_alias`的值在Windows上不起作用. (11认同)
  • `locale_alias`在Windows上不起作用(在Python 2.7.8 Windows 7上检查) (4认同)
  • 我发现它包含的语言环境比实际可用的语言环境多得多,这是通过尝试“setlocale(LC_ALL, ...)”其中一些来确定的。它当然包含的内容远远多于我的“locale -a”输出中的内容。它还_不_包含“locale -a”中的 4 个条目中的 3 个。这是在 macOS 10.14.6 和 Ubuntu 18 上测试的。 (3认同)
  • 我刚刚发现?(至少在 linux 系统上),并非所有实际存在(和安装)的语言环境都列在这本词典中。我做了`[item for item in locale.locale_alias.items() if "pt_br" in item[0].lower()]`并得到结果:`[('pt_br.iso88591', 'pt_BR.ISO8859- 1'), ('pt_br.88591', 'pt_BR.ISO8859-1'), ('pt_br', 'pt_BR.ISO8859-1'), ('pt_br@euro', 'pt_BR.ISO8859-15'), ('pt_br.iso885915', 'pt_BR.ISO8859-15')]` - 问题是我有一个上面没有列出的 ut-f8 pt_BR 语言环境 - 以下工作:`locale.setlocale(locale.LC_TIME, "pt_BR.utf -8")` (2认同)

sch*_*mar 8

您可以在MSDN上查找可用的区域设置名称.

您必须将MSDN列表中"语言字符串"的长版本作为值传递给setlocale.默认的本地化短代码就像en_EN它们是locale_alias不要在一般的工作.

我已经将它们中的一些提取为字典:

LANGUAGES = {
    'bg_BG': 'Bulgarian',
    'cs_CZ': 'Czech',
    'da_DK': 'Danish',
    'de_DE': 'German',
    'el_GR': 'Greek',
    'en_US': 'English',
    'es_ES': 'Spanish',
    'et_EE': 'Estonian',
    'fi_FI': 'Finnish',
    'fr_FR': 'French',
    'hr_HR': 'Croatian',
    'hu_HU': 'Hungarian',
    'it_IT': 'Italian',
    'lt_LT': 'Lithuanian',
    'lv_LV': 'Latvian',
    'nl_NL': 'Dutch',
    'no_NO': 'Norwegian',
    'pl_PL': 'Polish',
    'pt_PT': 'Portuguese',
    'ro_RO': 'Romanian',
    'ru_RU': 'Russian',
    'sk_SK': 'Slovak',
    'sl_SI': 'Slovenian',
    'sv_SE': 'Swedish',
    'tr_TR': 'Turkish',
    'zh_CN': 'Chinese',
}
Run Code Online (Sandbox Code Playgroud)

  • `locale_alias` 中的值在 Windows 上不起作用! (2认同)

ale*_*lex 6

我在 python 中发现的最丰富的语言环境支持是 babel。

请通过以下方式安装:

pip install babel
Run Code Online (Sandbox Code Playgroud)

然后,

import babel
all_ids = babel.localedata.locale_identifiers()
Run Code Online (Sandbox Code Playgroud)

还有对常用术语翻译等的广泛支持。 babel 正被用于各种其他软件包。

嗯,亚历克斯