35

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

$ locale -a
C
C.UTF-8
en_US.utf8
POSIX 

是否可以从windows上的 python 控制台执行相同的操作?

当您尝试这样做locale.setlocale(locale.LC_ALL, '???')并且根本不知道语言环境值的名称时,这可能会很方便。

4

5 回答 5

37
>>> import locale
>>> locale.locale_alias
于 2013-10-31T14:26:44.690 回答
10

您可以在MSDN上查找可用的语言环境名称。

您必须将 MSDN 列表中“语言字符串”中的长版本作为值传递给setlocale. 类似的默认 L10N 短代码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',
}
于 2014-11-14T10:03:15.927 回答
8

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

请安装:

pip install babel

然后,

import babel
all_ids = babel.localedata.locale_identifiers()

对常用术语翻译等也有广泛的支持。 babel 正在用于各种其他包中。

hth,亚历克斯

于 2016-09-15T08:46:25.787 回答
1

这个片段尝试了 locales 包已知的所有语言环境,并保留那些不会崩溃的语言环境,即可用的语言环境。(使用 Python 3.7.3 在 Windows 10 上测试)

import locale
available_locales = []
for l in locale.locale_alias:
    try:
        locale.setlocale(locale.LC_ALL, l)
        available_locales.append(l)
    except:
        pass
于 2020-10-14T19:25:00.583 回答
0

这个片段适用于我在 repl.it(python 3.8.2)、Windows(3.9.1) 和 LSW(3.9.2) 上运行:

import locale
available_locales = []
for l in locale.locale_alias.items():
  try:
    locale.setlocale(locale.LC_ALL, l[1])
    available_locales.append(l)
  except:
    pass
于 2021-03-29T16:59:07.423 回答