在lang属性中指示未列出或虚构的语言

时间:2013-05-30 04:48:34

标签: html xml lang

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

参考BCP 47(RFC 5646& 4647),我猜想需要und标记或-x私有用指标;但是首选形式(例如)“und-x-dothraki”,“x-dothraki”,“qgm-dothraki”(使用q + {{1}对于乔治马丁)或其他什么?

考虑这个例子:

gm

上面的The Ficlang words <i lang="???">foo bar</i> mean “Hello, sir” in English. 属性中的正确值是什么?

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

2 个答案:

答案 0 :(得分:3)

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

然而,BCP 47--这是一个描述“互联网最佳实践”的IETF文档而非标准 - 表示不应使用mis。这个论点相当薄弱:“因为将来添加其他代码会使其应用无效,它本身就不稳定,因此与BCP 47的稳定性目标不相容。总是更喜欢使用其他子标签:'und'或(事先同意)私人使用子标签。“

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

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

答案 1 :(得分:0)

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

我一直在寻找一种使用lang属性来表示<code>标记中使用的计算机语言的方法,最后我遇到了MDN lang attribute page,它表示: / p>

  

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

因此必须(应该)遵循的标准是CSP47。读the BCP47 spec,我发现:

  

[ISO639-2]定义了子标记中包含的几个代码          选择语言时需要额外注意的注册表          标签。

     

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

     

语言标签不应将这些子标签作为前缀,          除非附加信息为          应用。

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

  

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

不是我们的情况

  

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

     

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

     

省略语言标签(如果允许)是             首选。 'und'子标记可能对协议有用             需要提供语言标签或主要语言的地方             语言子标签是必需的(例如在“ und-Latn”中)。的             在匹配语言标签中的'und'子标签时,也可能很有用             某些情况。

也不是我们的情况:语言是确定的,只是不符合BCP标准。因此也不使用“ und”。

  

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

不是虚构语言的情况(假设您的虚构人物不是乐器)

  

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

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

  

不应使用此子标签。

嗯...

  

因为将来添加其他代码可以渲染             它的应用无效,本质上是不稳定的,因此             与BCP 47的稳定目标不符。

哦,对,“子标签不应该用于可能在某天以BCP47结尾的语言”!我怀疑你会...

  

总是             最好使用其他子标签:“ und”或“             协议)私有使用子标签。

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

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