来自 传承标准
翻译手记
当我开始XHTML 1.1的时候,我一直不知道应该在 xml:lang 上写什么好,我想使用中文,它的值是 zh 、 zh-cn / zh-CN 还是 gb2312 / gbk / gb18030 或者 utf8 ?通常遇到问题我都优先Google中文,无奈也是找不到答案。看到一些权威的网站上使用 gb2312 ,我还差点相信了,但根据我使用Linux中设置语言的经验,我直觉告诉我这是错误的。于是开始把范围缩小到W3C中去Google,找到了 Tutorial: Using language information in XHTML, HTML and CSS (DRAFT) ,细阅,终于走出误区,愿将经验与大家分享。
依旧是翻译,但这篇文章太长了,而且还有许多我们用不着的信息,这次我只选择了部分,希望能把问题说清楚就好。
声明文档与文本语言
为什么要声明语言
关于文档语言的信息对于屏幕阅读器和易用性都极为重要,从一开始就有利。这些程序需要了解它们是否能从文本中生成输出,或者是否需要转到不同的语言模式。
标记语言信息也对应用恰当的样式变更有好处。比如,需要改变字体来调节不同字符,依据语言来生成不用的引号等等。
有的浏览器使用语言信息为中文简体,中文繁体,日文和韩文来侦测适合的字体。但是,在一个使用Unicode编码的页面中,这些语言可能共享相同的表意字符内码。操这些语言的人可能在使用这些字符上的一些小细节上有所不同。下面的插图演示了仅仅改变语言标签,在Mozilla上的文本的效果:
标记语言信息也允许你使用脚本提取指定语言的元素。举个例子,使用 XSLT lang() 函数可以从一个文件中提取指定语言的文本,或者在XSL-FO转换的时候应用语言指定样式。
在许多的案例中,第一次开发内容时,你可能不会意识到这些应用的重要性,虽然它们在创建的时候一般非常容易添加,这就会在需要样式翻新时遇上麻烦。
另外,一些为语言标签标记的程序还在早期开发或者缺乏中,但是,从现在起你就应该为你的内容增加语言信息,以便在技术成熟的时候收获未来的好处。
总体上始终为文档在 <html> 标签中声明语言
HTML文档总体上应该声明文档的语言,可以通过在 html 标签中增加 lang 属性来实现。比如,下面声明了一个使用加拿大法语(Canadian French)的文档:
<html lang="fr-CA">
稍后我们会更具体地讲述如何为语言属性指定值。
当把XHTML伺服为 text/html ,你应该在html元素中都使用 lang 属性和 xml:lang 属性。 xml:lang 属性是在 XML 中确定语言信息的标准用法。以下演示你应该如何标记先前以 text/html 伺服的XHTML 1.0的例子:
<html lang="zh-CN" xml:lang="zh-CN" xmlns="http://www.w3.org/1999/xhtml">
xml:lang 属性在处理HTML文件时并没有实际用处,但从 lang 属性继承过来意味着你要使脚本或校验器把该文档当作XML。
如果你以XML(比如,使用像 applications/xhtml+xml 的 MIME 类型)或者XHTML 1.1来伺服XHTML的话,你不再需要 lang 属性,因为它已经跟HTML语言分离了。单独的 xml:lang 属性就已足够。
<html xml:lang="zh-CN" xmlns="http://www.w3.org/1999/xhtml">
始终声明文本的语言变更
在与内容主要语言不同的文本中,应该指出该文本的语言。方法跟与
总体上始终为文档在 <html> 标签中声明语言这一节相同——使用 lang 或者 xml:lang 属性。例如,在HTML中你可以写作:
<p>The French for <em>Cat</em> is <em lang="fr"> chat