Python中的语言代码列表(ISO639-1)是什么?

11

从 pycountry 1.15 中获取所有 ISO639-1 语言代码的列表,是否可能?例如,['en','it','el','fr',...]?如果是,应该如何实现?

很遗憾,以下方法无法实现:

import pycountry
pycountry.languages

你需要ISO 3166国家代码还是ISO 639语言代码?据我所知,“ISO 3166-2语言代码”并不存在。 - Robᵩ
2个回答

13

这将给你一个包含两位数的ISO3166-1国家代码列表:

countries = [country.alpha2 for country in pycountry.countries]
#countries = [country.alpha_2 for country in pycountry.countries]  # for python3 

这将为您提供一个包含两位字母的ISO639-1语言代码列表:

langs = [lang.iso639_1_code
         for lang in pycountry.languages
         if hasattr(lang, 'iso639_1_code')]

这将为您提供所有语言代码的列表:

langs = [getattr(lang, 'iso639_1_code', None) or 
         getattr(lang, 'iso639_2T_code', None) or 
         getattr(lang, 'iso639_3_code') 
         for lang in pycountry.languages]

不错。可以使用langs = [(lang.iso639_1_code, lang.name) for...生成语言选择窗口部件的数据。如果它只在应用程序启动时运行,那么就无需硬编码语言列表或保持单独的数据库表。 - fmalina
6
这是 Python 3 上的 alpha_2 版本。 - Georg Pfolz

1

对于Python3,代码如下:

countries = [country.alpha_2 for country in pycountry.countries]

2
这里并不包含所有的语言代码,似乎省略了一些与特定国家无关的代码。例如:维基百科指出,“AA”是非洲亚洲语系的有效语言代码,但这里不会显示结果。 - robert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,