语言声明的种类

在Web上,将内容与语言信息相关联是非常重要的。一方面,这样可以正确地处理或呈现内容,另一方面,了解整个资源的预期受众的语言也可能很有用。这是不同的两件事,所以应该有不同的技术表达方式,内容作者也应该正确地使用他们。

本文介绍了这两种类型的语言信息(“元数据”和“文本处理”)的不同之处。

文本处理语言

当浏览器或应用程序显示或修改内容时,通常需要考虑内容的语言信息。这包括诸如在语音浏览器中阅读文字、运行拼写检查器、断行算法、添加连字符、选择文本的默认字体以及其他需要语言信息才能完成的算法。为此,应用需要知道特定范围的文本语言信息

因此,我们必须要讨论在资源中将单个语言与文本或一段文本关联的方法。尽管预期受众可以懂多种语言,但一定范围的文本只能使用一种语言。

在HTML中,lang属性用于指定文本处理语言。该属性可用于为整个页面设置默认语言,也可以用于修改一小段不同语言的内容。

<html lang="en">

...

<p>The title of the book is "<cite lang="el">Κάνοντας τον Παγκόσμιο Ιστό πραγματικά Παγκόσμιο</cite>".</p>

这种需求对如何声明文本处理语言有影响,而这就是lang属性仅允许你使用单个语言值的原因。

元数据:预期受众的语言

描述预期受众的单个或多个语言的元数据是和整个文档或资源相关的。这种元数据可用于搜索、提供正确的语言版本、工作流管理,分类等。

预期受众的语言不一定包括文档中使用的每种语言。Web上的许多文档都包含不同语言的内容片段,而页面本身显然是针对特定语言的使用者的。例如,一本德国的北京城市指南可能包含一些有用的中文短语,但针对的是使用德语的人,而不是用中文的人。

另一方面,页面也可能以多种语言包含相同的内容。例如,一个加拿大的网页可能会在左边使用法语欢迎读者,并在右边用相同的英语。该文档对两种语言的使用者相同对待,因此有两种受众语言。这种情况在Web上并不像在纸质出版物中那样普遍,因为我们很容易链接到一个单独的页面,但它确实发生在有多语言社区的地方。另一个用例是针对多语言社区的博客或新闻页面,其中某个页面上的某些文章用一种语言,其他则使用另一种语言。比如,旁遮普人社区使用的论坛可能包含英语、印地语和旁遮普语的帖子。

在某些页面上,包括页面标题在内的导航信息是一种语言,但页面的实际内容却是另一种语言。尽管这不是一个好的实践,但并不会改变预期受众的语言通常是内容的语言这一事实,不论文档源代码头部的语言是什么。

对于HTML页面,可以在HTTP的Content-Language首部中表达受众的元数据,此内容首部可以包含多个值。

Content-Language: en, hi, pa

HTML页面有时包含一个以类似方式声明语言的meta元素,如<meta http-equiv="content-language" content="en, fr"/>,但现已不推荐使用。(有关更多详细信息,请参见HTTP首部、meta元素和语言信息。)

从元数据中推断文本处理语言

在某些情况下有可能从元数据中推断出资源的文本处理语言,但并非总是如此。

如果元数据值是多种语言的列表,则需要一种方法来识别处理内容时要使用的单个语言。

此外,在文档内有语言变更的情况下,有关目标受众语言的信息就无法与文本处理的页面的适当部分相关联(即无法在语言改变时进行语音合成、应用合适的样式、自动选择字体等操作)。

因此,在为数据开发新的技术或格式时,开发者应提供单独的方法来表达预期受众的语言和文本处理的语言。

内容开发者应该正确使用相关结构。

有关如何在HTML中设置语言的信息,请参见在HTML中声明语言