将ISO 639-1转换为ISO 639-2

时间:2015-12-16 01:35:29

标签: python iso-639

我需要使用 <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingOne"> <h4 class="panel-title"> <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne"> Se fler produkter.......................***etc info.plist并将其转换为ISO 639-1 code,例如info.plist

我查看了以下库,但没有找到任何记录的方法来执行任何转换:

我错过了什么吗?那就是 - 这些库中的任何一个都可以吗?

2 个答案:

答案 0 :(得分:4)

您可以将pycountry用于所需内容。请注意,如果您想要反向方案(ISO 639-2至ISO 639-1),它可能并不总是有效,因为虽然应始终存在从ISO 639-1语言代码到ISO 639-2的映射,但反之亦然不保证。

import pycountry

code = 'en-GB'

# ISO 639-1 codes are always 2-letter codes, so you have to take
# the first two characters of the code

# This is a safer way to extract the country code from something
# like en-GB (thanks ivan_pozdeev)
lang_code = code[:code.index('-')] if '-' in code else code

lang = pycountry.languages.get(iso639_1_code=lang_code)
print("ISO 639-1 code: " + lang.iso639_1_code)
print("ISO 639-2 code: " + lang.iso639_2T_code)
print("ISO 639-3 code: " + lang.iso639_3_code)

以上内容应打印出来:

ISO 639-1 code: en
ISO 639-2 code: eng
ISO 639-3 code: eng

答案 1 :(得分:1)

维基百科上的

List of ISO 639-2 codes有一个表格,列出了对应关系。由于它不是1-1映射,因此转换并不总是可行。

错过了某些内容 - 很有可能使用您指定的库进行转换。

  

内置语言转换器(alpha2,alpha3b,alpha3t,名称,范围,   type和opensubtitles):

>>> language = babelfish.Language('por', 'BR')
>>> language.alpha2
'pt'
<...>
>>> babelfish.Language.fromalpha3b('fre')
<Language [fr]>
  • langcodes专为不同的任务量身定制 - 无论标准如何,都能识别和匹配语言。因此,您可以提取与初始代码相关的所有代码 - 不同程度 - 但它不会告诉您它们属于哪种标准。

  • pycountrybabelfish类似,并由the other answer涵盖。