3

我如何指示 IANA 语言子标签注册表中未列出的语言,例如虚构语言?

参考BCP 47(RFC 5646 和 4647),我猜想需要und标签或-x私人使用指示符;但是首选的形式(例如)是“<code>und-x-dothraki”、“<code>x-dothraki”、“<code>qgm-dothraki”(使用q+gm表示 George Martin)还是其他形式?

考虑这个例子:

The Ficlang words <i lang="???">foo bar</i> mean “Hello, sir” in English.

lang="???"上述属性中的正确值是多少?

(理想情况下,这应该包括一种区分多种非标准语言的方法。)

4

2 回答 2

3

根据国际标准ISO 639-2,语言代码mis表示未编码的语言。

然而,BCP 47 - 这是一个描述“互联网最佳实践”的 IETF 文件,而不是一个标准 - 说不mis应该使用它。论据相当薄弱:“因为将来添加其他代码可能会使其应用无效,它本质上是不稳定的,因此与 BCP 47 的稳定性目标不兼容。总是最好使用其他子标签:要么 'und'或(经事先同意)私人使用的子标签。”</p>

HTML5 CR – W3C 的候选推荐 – 说如果lang属性值是空字符串,即lang="",那么“它必须被解释为意味着节点的语言是明确未知的”。当前的 HTML 建议不包含这样的原则,并且对于lang属性的特殊值,它们相当模糊。

因此,原则上,这取决于您认为哪些文件具有权威性。另一方面,它很可能对任何事情都没有实际影响:只要lang属性值不在浏览器识别的有限(和浏览器相关)语言代码集中,它很可能被视为抑制任何语言- 浏览器可能具有的特定处理(针对元素)。

于 2013-05-30T09:31:22.957 回答
0

(我会评论@Jukka K Korpela 的答案,但评论太短了)

我正在寻找一种方法来使用该lang属性来表示<code>标签中使用的计算机语言,最后我进入了MDN lang attribute page,上面写着:

该属性包含一个单一的“语言标签”,其格式在用于识别语言的标签 (BCP47) 中定义。

所以必须(应该)遵循的标准是CSP47。阅读BCP47 规范,我发现:

[ISO639-2] 定义了包含在子标签注册表中的几个代码,在选择语言标签时需要格外小心。

在大多数情况下,在允许省略语言标签的情况下,这种省略比使用这些代码更可取。

语言标签不应该包含这些子标签作为前缀,除非附加信息向应用程序传达了一些价值。

我们在这种情况下:您提供附加信息(标签的内容是用您的虚构语言编写的),因此可以使用 lang 属性而不是不使用它。

“mul”(多种)主要语言子标签标识多种语言的内容。[...]

不是我们的情况

“und”(未确定)主要语言子标签标识其语言未确定的语言内容。

除非需要语言标签并且语言信息不可用或无法确定,否则不应使用此子标签。

最好省略语言标签(在允许的情况下)。“und”子标签可能对需要提供语言标签或需要主要语言子标签的协议有用(例如在“und-Latn”中)。在某些情况下匹配语言标签时,“und”子标签也可能很有用。

也不是我们的情况:语言是确定的,只是不在 BCP 标准中。因此也不使用'und'。

“zxx”(非语言,不适用)主要语言子标签标识语言分类不合适或不适用的内容。一些例子可能包括器乐或电子音乐;由非语言声音组成的录音;没有旁白、对话、印刷标题或字幕的视听材料;由机器语言或字符代码组成的机器可读数据文件;或编程源代码。

不是虚构语言的情况(假设你的虚构角色不是乐器)

“错误”(未编码)主要语言子标签标识其语言已知但当前没有相应子标签的内容。

似乎是你的情况:让我们用这个!

不应使用此子标签。

嗯……

由于未来添加其他代码可能会导致其应用无效,因此它本质上是不稳定的,因此与 BCP 47 的稳定性目标不兼容。

哦,对了,“子标签不应该用于有朝一日可能会出现在 BCP47 中的语言”!我怀疑你的...

最好使用其他子标签:“und”或(事先同意)私人使用子标签。

这是另一种方法,您可以使用x-语言标签并将其视为私有语言。空的 lang 标记不适合,因为该语言是已知的。不设置 is 也是一个错误,因为它不是主流的语言。

到目前为止,我得到了规范,您可以使用mis-...x-... 语言标签。如果我弄错了,请纠正我(在同样的情况下我很快就会这样做[虚构语言],所以如果我在开始代码之前知道这是错误的方式,那对我来说更容易纠正!)

于 2019-10-16T12:42:41.867 回答