为什么要用语言属性(lang)?[译]

原文链接: https://www.w3.org/International/questions/qa-lang-why.en
目标读者:HTML编码人员(使用编辑器或脚本),脚本开发人员(PHP,JSP等),以及任何想知道为什么在HTML中使用(lang)语言属性的人。

提问

为什么应该在网页中使用语言属性(lang)?

语言属性(或者xml:lang)为网页内容指定相应的自然的语言。html标签上的(lang)属性会设置页面上所有文本的语言。如果页面内的一部分文本需使用其他语言,你可以给这部分内容加上标签包围并设置为相应lang值。关于如何使用lang属性请参考:HTML语言声明

快速回答

通过识别您的网页内容的语言,可以帮您自动完成许多事情。从改变页面的外观和行为,到信息的提取以及改变应用程序的运行方式。有些语言设置会被应用到整篇文档上,有些则只会被应用到文档中某些被标记的片段上。为了能够在新的开发任务来临时获得这些好处,最好现在就为你的网页内容添加语言信息。在刚开始的时候就这么做,会比以后再进行改进要更加容易。

详细解答

在这里我们列出了目前语言信息有用的几种方式,但是,随着规范和浏览器的更新发展,将来可能会有许多其他的语言信息应用程序。

样式页面
语言属性(lang)让你可以按语言更改内容的样式。更多使用信息,请参见:使用lang属性设置样式
例如,字体或行距可能需要更改以适应不同的字母,样式生成的引号可能需要根据语言而不同,强调样式可能需要以语言相关的方式表达,等等。
以下示例展示了如何为页面中的嵌入阿拉伯文本设置特定字体。

1
2
3
4
5
6
body {
font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
}
:lang(ar) {
font-family: "Traditional Arabic", "Al Bayan", serif;
}

另外一个特例则是连字符,连字符规则非常依赖于语言的。在CSS中的连字符属性的描述(在撰写本文时,浏览器才开始采用它)文中表示“正确的自动的连字符需要一直合适的连字符资源去链接被破坏的语言文本。因此,浏览器仅需要自动连接开发者设置了语言的文本(比如通过HTML的lang属性或者XML的xml:lang设置的文本),且具有自己的合适的连字符资源。”
其他受语言影响的排版和布局功能包括换行、对齐和大小写转换,以及随着规范的发展而出现的更多功能。

字体选择
浏览器可以(并且会)使用语言信息来选择适合的字体来显示,从而改善页面的整体用户体验。
比如,以统一码编码的网页,简体中文、繁体中文、日文及韩文的文字可能共用一个编码,但是这些语言的使用者希望使用的字形在每个语言的细节上都有所不同。在开发者没有明确设定字体样式的时候,一些浏览器会自动根据文本语言内容设置合适的字体样式。下图展示了在Firefox或IE等浏览器中设置不同的语言属性(lang)值的不同样式。
avatar

搜索
尽管主要搜索引擎通常使用自动语言检测来识别资源的语言,但是可以使用页面内部标记根据用户的语言偏好来提高搜索结果的质量

拼写和语法检查器
编辑器可以根据当前内容的语言调整拼写和语法检查,或者忽略不在拼写检查器语言中的内容。这可以大大提高检查拼写时的效率。
浏览器最近也开始允许用户检查他们在表单或内容可编辑元素(contenteditable)中键入的文本的拼写,考虑到有关内容语言的信息的浏览器可以提供更有效的用户体验

翻译
翻译工具可以根据设置的语言属性识别特定语言中文本的页面或部分,并自动调整工作流程或保护文本不受翻译工具中的更改。

无障碍阅读者
语言信息可帮助语音合成器和盲文翻译器产生可用的结果。这些应用程序需要知道它们是否可以从文本中产生输出,或者是否需要切换到其他语言模式。
《 W3C网站可访问性指南》建议使用语言标记,同时在某些国家的政府政策中,被强制要求使用,比如在英国-《残疾歧视法》中。

解析器和脚本
用语言信息标记内容还可以进行特定于语言的处理。
例如,脚本或XSLT样式表可用于执行各种操作,包括:
·从页面中提取特定于语言的文本
·从特定语言的页面中查找并选择信息
·按照给定语言的适当方式对内容重新排序(排序顺序非常依赖于语言)
·在转换为另一种格式(例如XSL-FO)的过程中,应用特定于文化的样式,例如适当的引号替换或强调。
请记住,创建信息时,您并不总是知道人们以后会如何处理您的信息。

顺便说一下

近年来,随着技术的进步,语言标记的用处越来越大,而且随着我们的前进,它将继续增加。在许多情况下,在第一次开发内容时,这些应用程序可能不那么重要,但随着时间的推移,它们的价值可能会增加。然而,我们目前面临着一个循环问题。没有看到语言信息应用程序的人不会提供有关其内容的语言的信息。在这些信息被广泛应用于内容之前,与语言相关的应用程序被部署得很慢。这个循环可以通过内容作者声明语言信息作为理所当然的事情来打破。标记和标记正确的内容越多,这类应用程序就会变得更有用和更普遍。添加语言信息通常很容易,不受惩罚。