某些语言已接受拉丁字符的音译,例如印地语,俄语或日语。例如,用梵文剧本编写的“男人正在吃饭”的印地语是'आदमीखारहाहै'。音译,它将是'Aadmi kha raha hai'。 (或类似的东西;这种方法通常在网上使用,特别是如果人们无法访问印地语键盘。)
在这种情况下,我们使用拉丁文脚本但仍然使用印地语编写,因此可以使用lang
属性标记任一变体:
<span lang="hi">आदमी खा रहा है।</span>
或 <span lang="hi">Aadmi kha raha hai.</span>
我的问题是关于通常用拉丁字母本身编写的语言,但可能有非演讲者/学习者的语音指南 - 无论是IPA还是临时发音 - 在赋予其语义意义方面是否有任何最佳实践?
例如,在爱尔兰语中,如果我要说“男人正在吃东西”,我会说“Táa fear ag ithe”。我可以将其标记为:
<span lang="ga">Tá an fear ag ithe.</span>
如果我要为非发言者提供发音指南,我可能会说“Taw on far eg heh-he”。这句话并非毫无意义,(如'lorem ipsum'文本),但英语或爱尔兰语中的句子也不例外。
在这种情况下,HTML中与语言相关的属性的正确使用是什么,或者该规范目前尚未涵盖此用例?
答案 0 :(得分:5)
简短版本:如果您想明确说出它是用拉丁字母书写的,请为您提供的示例选择“hi-Latn”或“ga-Latn”。
长版:
The W3C spec for the lang attribute没有具体提到这一点 - 它暗示了一些依赖于拼写的用法(例如使用它来渲染所用字符的高质量版本),但有些则没有(例如搜索引擎)。
RFC1766,指定语言标签的格式,建议标签的特化可用于表示“脚本变体,例如az-arabic和az-cyrillic”。有关脚本子标签in this article on the W3C site的更多内容,以及the later RFC5646中的额外内容。那个指向一个ISO standard list of script names,在那个列表中你想要的脚本是“Latn”,因为它们是其他脚本的罗马化形式。
(这不包括指定你如何进行音译的内容,对于可能有多个标准的语言,例如使用Wade-Giles和拼音的拉丁文中文。)
答案 1 :(得分:3)
对于大多数实际用途,无关紧要,因为浏览器,搜索引擎和其他相关程序通常会忽略lang
属性。属性可能会影响字体的选择,但仅限于页面本身不建议字体(这种情况很少见)。某些语音浏览器会识别lang
的一些值并相应地调整其功能。如果您在MS Word中打开HTML文档,它会识别lang
标记并应用特定于语言的拼写工具。但这一切都相当有限,而且很少发生。此外,在这些情况下,只能识别最简单类型的语言代码。
原则上,可以指示书写系统(“脚本”),例如拉丁语与梵文,以及已使用的音译或转录系统。这已在BCP 47中描述。但是对于大多数情况来说,它是实现者的指导方针,而不是你现在可以使用的东西。
例如,您可以编写<span lang="hi-Latn">Aadmi kha raha hai.</span>
来表示内容是印地语,但是用拉丁字母书写。原则上至少有一种方法可以表明使用了哪种竞争罗马化系统。我认为任何与网络相关的软件都不会识别lang="hi-Latn"
;程序甚至可能无法识别它,即使它们识别lang="hi"
。
因此,您可以使用lang
的详细值,但它没有多大用处。对{* 1}}这样的任何主要片段使用简单标记(例如,句子或更多)是一种很好的做法,尽管不多。在花费太多时间之前,请考虑一下您可以期待的实际好处。例如,如果您考虑使用hyphenate.js之类的客户端连字符,则lang="hi"
标记变得至关重要;但是你需要检查该软件的期望,而不仅仅是一般规范。
警告:在使用拉丁字母书写的俄语lang
时,我看到了奇怪的结果。原因是浏览器可能会切换到“font for Russian”的概念,导致混合字体。但简单的补救措施是为所有文本设置一些一致的字体设置,覆盖浏览器默认设置,如果是这样的话。
像“Taw on far eg ih-he”这样的字符串不能被有意义地归类为某种语言。如果您使用语言标记,请使用lang="ru"
(将空字符串作为值),因为这是明确指示未指示语言的定义方式!
答案 2 :(得分:0)
您可能希望将其标记为<ruby>
。
例如:
<ruby lang="hi">आदमी<rt>Aadmi</rt> खा<rt>kha</rt> रहा<rt>raha</rt> है।<rt>hai</rt></ruby>