在 RFC 5646, 用于识别语言的标签, § 3.1.2 记录和字段定义中,以下解释是针对"首选值"字段出现在类型为"变体"的记录中的语义:
- 对于类型为"脚本"、"区域"或"变体"的字段,"首选值"包含用于形成语言标记的首选类型的相同类型的子标记。
我对此的最初解释是,如果记录的类型是变体,那么首选值的值也是一个变体- "相同类型的子标记"。换句话说,我将"同一类型"读作"与记录本身相同类型"。
但是,语言标记注册表的当前版本中有一些记录(在我写这篇文章时为 2018-04-23 - 似乎没有版本链接(与这种解释不匹配。例如:
Type: variant
Subtag: arevela
Description: Eastern Armenian
Added: 2006-09-18
Deprecated: 2018-03-24
Preferred-Value: hy
Prefix: hy
此处的首选值不是变体 — 变体必须是 5-8 个字母数字 ASCII 字符或 1 个数字加三个字母数字字符。特别是在这种情况下,很明显它指的是亚美尼亚语(语言标签的第一段(而不是变体。
但是,在查看其他条目时,大多数首选值确实符合我最初的解释。例如:
Type: region
Subtag: YD
Description: Democratic Yemen
Added: 2005-10-16
Deprecated: 1990-08-14
Preferred-Value: YE
在这里,首选值似乎是另一个区域代码。脚本/区域/变体类型的规则是一起给出的 — 首选值是所有这些类型的"相同类型"。如果对于一个区域记录,"相同类型首选值"意味着"也是一个区域",那么对于变体记录,首选值如何指向不同的类型?更重要的是,如果可能的话,确定首选值字段的类型以测试其语法的唯一方法是什么?
你是对的。该arevela
条目不符合注册表规范。他们似乎注意到了这一点;截至 2021 年 2 月 23 日的注册表为没有该Preferred-Value
arevela
提供了一个新条目。相反,它有注释"首选标签是hy"。
您的评论似乎也是正确的(我对规范中该部分的最初解释是错误的(。他们也更改了这些条目,因此所有extlang现在都有一个Preferred-Value
,它是与extlang相同的主要语言子标签。