我如何指出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.
属性中的正确值是什么?
(理想情况下,这应包括区分多种非标准语言的方法。)
答案 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-...
语言标签。如果我误会了,请纠正我(这是我在相同情况下[虚构语言]很快就会采取的方式,因此,如果在启动代码之前知道这是错误的方式,那对我来说更容易纠正!)