24

通过应用程序的 REST API,我收到以下形式的语言代码:ll-Xxxx.

  • 两种小写字母语言(看起来像ISO 639-1),
  • 一个破折号,
  • 最多四个字母的代码,以大写字母开头(看起来像 ISO 639-3宏语言代码)。

一些例子:

az-Arab Azerbaijani in the Arabic script
az-Cyrl Azerbaijani in the Cyrillic script
az-Latn Azerbaijani in the Latin script

sr-Cyrl Serbian in the Cyrillic script
sr-Latn Serbian in the Latin script

uz-Cyrl Uzbek in the Cyrillic script
uz-Latn Uzbek in the Latin script

zh-Hans Chinese in the simplified script
zh-Hant Chinese in the traditional script

根据我在网上找到的:

[ ISO 639-1 ] 是 ISO 639 系列语言代码国际标准的第一部分。第 1 部分涵盖了两个字母代码的注册。

ISO 639-3是语言代码的国际标准。在定义它的一些语言代码时,一些被定义为宏语言[...]

现在我需要编写一段代码来验证我是否收到了有效的语言代码。
但是由于我收到的是 639-1(2 个字母语言)和 639-3(宏语言)的混合,我应该坚持什么标准?这些代码是否属于某种混合(也许是常见的)标准?

4

2 回答 2

14

当前识别语言的参考是IETF BCP 47,它结合了 IETF RFC 5646 和 RFC 4647。

形式的代码ll-Xxxx结合了 ISO 639-1语言代码(两个字母)和ISO 15924 脚本代码(四个字母)。BCP 47 建议语言代码以小写字母书写,而脚本代码以“首字母大写的小写字母”书写,但这主要是为了便于阅读。

BCP 47 还建议语言代码应该是可用的最短 ISO 639 标记。因此,如果一种语言同时以ISO 639-1(两个字母)和ISO 639-3(三个字母)表示,那么您应该使用 ISO 639-1。

于 2016-08-15T16:47:15.607 回答
13

遵循RFC-5646(第 4 页),可以使用以下形式编写语言标签:[语言]-[脚本]

于 2013-09-21T13:53:19.967 回答