65

我已经用谷歌搜索(好吧,实际上是 DuckDuckGo'ed),直到我脸色发青,但找不到该类型en-GBfr-CA任何地方的语言代码列表。

有关于组件的优秀资源,特别是W3C I18n 页面,但我希望有一个简单的按字母顺序排列的列表,如果可能的话,相当规范(类似于这个)。找不到。

谁能指出我正确的方向?非常感谢!

4

8 回答 8

60

有几种语言代码系统和几种地区代码系统,以及它们的组合。当您提到 W3C 页面时,我假设您指的是BCP 47中定义的系统。该系统是正交的,因为像 en-GB 和 fr-CA 这样的代码只是简单地结合了语言代码和区域代码。这意味着有大量可能的组合,其中大部分没有什么意义,例如 ab-AX,这意味着在奥兰说的阿布哈兹语(我不认为任何人,更不用说任何社区,在那里说阿布哈兹语,尽管理论上是当然可能)。

因此,任何语言-区域组合列表都只是一个实用的组合列表,这些组合在某种意义上很重要,或者在某种特殊意义上被某些软件支持。

您找到的规范定义了一般原则以及不同“子标签”(如主要语言代码和区域代码)的权威来源。对于最重要的部分,官方注册机构维护语言的三字母和两字母 ISO 639 代码,ISO 网站包含区域的两字母 ISO 3166 代码。这些列表非常易读,我认为没有理由考虑使用这些主要资源之外的其他资源,尤其是在可能的更改方面。

于 2012-11-07T12:03:10.817 回答
14

这里有两个组件:

  1. 通常由ISO 639-1 alpha-2定义的语言标签
  2. 通常由ISO 3166-1 alpha-2定义的区域标签

您可以以任何对您有意义的组合来混合和匹配语言和地区,因此没有所有可能性的列表。

顺便说一句,您有效地使用了BCP47 标记,它定义了每个语言环境段的标准。

于 2012-11-07T11:52:00.540 回答
8

Unicode 维护这样一个列表: http ://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/index.html 更好的是,您可以使用 XML 格式(非常适合解析列表)以及每种语言使用的常用书写系统:http: //unicode.org/repos/cldr/trunk/common/supplemental/supplementalData.xml (查看/LanguageData)

于 2013-02-06T16:37:15.253 回答
3

一种解决方案是解析此列表,它会为您提供创建所需列表所需的所有键。

http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry

于 2014-06-10T07:20:01.437 回答
3

这可以在Unicode 的 Common Locale Data Repository中找到。具体来说,此信息的JSON 文件可在他们的cldr-json 存储库中找到

于 2021-01-26T19:32:12.450 回答
3

我想你可以从这里http://www.unicode.org/cldr/charts/latest/supplemental/territory_language_information.html

于 2018-04-17T12:39:11.017 回答
2

我们有一个工作列表,用于为 Localizejs 引用语言代码/语言名称。希望有帮助

YAML 或 JSON 中的语言代码列表?

于 2015-03-06T15:32:44.390 回答
1

主要语言子标签列表,每种语言都有公共区域子标签(基于每个地区的语言使用者人数):

https://www.unicode.org/cldr/charts/latest/supplemental/language_territory_information.html

例如,对于英语

  • 美国(320,000,000)
  • en-IN (250,000,000)
  • 恩-NG (110,000,000)
  • en-PK (100,000,000)
  • en-PH (68,000,000)
  • zh-CN (64,000,000)

Jukka K. Korpela和tigrish很好地解释了为什么语言 + 区域代码的任何组合都是有效的,但是拥有一个最有可能在实际使用中的代码列表可能会有所帮助。 sf的链接对这些有用的信息进行了排序按地区划分,因此按语言对这些信息进行排序也可能会有所帮助。)

于 2019-12-21T04:28:45.413 回答