为什么使用语言属性?

Intended audience: HTML 程序员(使用编辑器或脚本),脚本开发人员(PHP、JSP,等),以及任何想知道为什么他们应该在 HTML 中使用语言属性的人们。

Question

为什么我应该在网页里使用语言属性呢?

lang(有时是 xml:lang)属性指定页面内容的自然语言。它是 html 标签的一个属性,用于设定页面上所有文字的语言。倘若页面上的部分文字使用不同语言,你可以给环绕文字的元素的语言属性赋一个不同的值。 关于如何使用语言属性,请看 HTML 中声明语言

Quick answer

明确你内容的语言可以让你自动化许多事情,从修改页面外观与行为,到提取信息,到改变应用的工作方式。一些语言应用在整个文档的层面运行,一些在适当标记过的文档片段上运行。

最好现在就给你的内容加上语言信息,这样新式开发崛起时就能够享到好处。创建内容时就实行很容易,后来再改进就难了。

Details

我们在这儿,列出一些语言信息现下的用处,不过,随着标准跟浏览器的进化,未来可能会有更多其他的语言信息的应用。

样式化页面

语言属性允许你根据语言调整内容样式。更多用法请看使用 lang 属性样式化

比方说,字体或行距可能需要变化以适应不同字母系统,样式生成的引号在不同语言下可能会不一样,粗体可能需要照语言独有的方式表达,等等。

下面的例子告诉你,如何给页面中嵌入的阿拉伯文设定一个特定字体。

body { font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif; } :lang(ar) { font-family: "Traditional Arabic", "Al Bayan", serif; }

另一个与语言相关的行为的例子是断字。断字规则与语言关系密切。CSS hyphens 属性的描述(在写这篇的时候该属性开始为浏览器接纳))说“正确的自动断字需要一个所要断的文本语言相应的断字字典。因此,如果作者声明过文本的语言(比如通过 HTML lang 或 XML xml:lang),也有了相应的断字字典,则再加上 UA 就可以自动断字了。“

另外的受语言影响的排版与布局特性包括断行、对齐与大小写转换,随着标准的发展,会有更多的特性加入其中。

字体选择

用户代理能够(也确实)使用语言信息选择与语言相适的字体,这可以提升页面的整体用户体验。

比如说,一个 Unicode 编码的页面,不管是简体中文、繁体中文、日文还是韩文的文本,可能共享一个表意文字的代码点,但是讲演者希望,字形会根据语言有细节调整。如果内容作者没有明确指定样式,有些浏览器会自动根据内容的语言应用适当的字体。下面的图片说明显示在 Firefox 或 Internet Explorer 这样的浏览器里只改变语言属性的值的效果。

搜索

虽然主流搜索引擎一般都使用自动语言检测来鉴定资源的语言,但页面内部的标记可以基于用户的语言偏好改进搜索结果的质量。

拼写与语法检查

编辑工具可以根据内容的语言调整拼写与语法检查,又或者忽视那些非拼写检查器语言的内容。这可以提高你拼写检查的效率。

最近,浏览器开始允许用户检查他们输入到表单或带有 contenteditable 属性的元素里的文本拼写。一个考虑内容的语言信息的浏览器可以提供给用户更有效的体验。

翻译

翻译工具可以使用语言属性来辨识页面,或者某一段特定语言的文本,然后自动调整工作流,或者保护文本,不被译者在翻译工具中更改。

非文本阅读器

语言信息有助于语音合成器和盲文翻译器生成可用的结果。这类软件需要知道它们是否可以从文本中生成结果,又或他们是否需要切换到另一个不同的语言模式。

语言标签是 W3C Web 可访问性指南推荐的,某些国家的政府政策也强制要求,比如 UK - 残疾歧视法(UK)。

分析器与脚本

给内容添加语言信息标签还允许特定语言的处理。

比如说,一个脚本或 XSLT 样式表可以用来做许多事情,包括:

请记住,在你创建信息的时候,你不总是知道后来的人们将如何处理你的信息。

By the way

最近几年,随着技术的发展,语言标签的好处不断凸显,它的好处还将随着我们的前进不断增加。在许多案例中,刚开始开发你的内容时,在你来看,这类用法可能并不重要,但随着时间的过去,价值可能会增长。但我们目前面对着一个闭环问题。没看到语言信息应用益处的人们在他们的内容中没有提供语言信息。语言相关的应用就发布得很慢,直到这个信息被广泛应用到内容上。这个环可以被打破,只要内容作者理所当然地声明语言信息。越多的内容被打上标签,并且标签正确,这类应用就会变得更加有用并且流行。添加语言信息通常很容易,并且没有坏处。