在HTML根元素的lang属性中定义多种语言?

47

我希望能够为文档确定多种语言,因为该文档可用于不止一种语言。如果我使用:

<meta http-equiv="content-language" content="en,de,fr" />

这不符合 W3C 标准,验证器提示我应该在根元素的 lang 属性中定义它,但是该属性只支持一种语言:

<html lang="en">

可以运行,但不完美。

<html lang="de,en,fr">

那么我应该在哪里定义它?


如果一个文档有多种语言版本,那么你基本上有多个可用的文档。因此,每个文档都应该有自己的语言设置。 - Arjan
可能是重复的问题:在混合语言页面中应该使用什么<html lang="">属性值? - Ciro Santilli OurBigBook.com
另一个问题(可能是重复的)也有两个技术上正确但对于机器人和辅助技术来说含义不太令人信服的答案:mul和空值。 - Volker E.
5个回答

33

所有属性仅支持一种语言,因此我认为您应该只定义一种语言;应该设置最重要的语言。如果在单个文档中有多种语言,则无法完成此操作,因此以下是解决您问题的信息:

lang和xml:lang属性不允许您将多种语言分配给单个文档。因此,如果您编写了具有多种语言的Web页面,您有两个选择:

  1. 使用lang属性定义主语言,然后在文档中的元素上使用lang属性调用第二语言。
  2. 根据需要在文档的特定部分中定义lang

    <div lang="fr-CA" xml:lang="fr-CA">
    Canadian French content...
    </div>
    <div lang="en-CA" xml:lang="en-CA">
    Canadian English content...
    </div>
    <div lang="nl-NL" xml:lang="nl-NL">
    Netherlands, Dutch content...
    </div>
    

我有一些多语言页面,并且我使用第二个选项。

你可能想阅读http://www.w3.org/TR/2007/NOTE-i18n-html-tech-lang-20070412/#ri20060630.133619987


4
Content-Language HTTP头的含义及其meta标签替代品是声明文档语言或预期受众的语言(相关RFC存在矛盾),而不是其他文档(如当前文档的翻译)的语言。该头部的实际效果很小,可能仅限于使用第一个命名的语言作为文档的语言,如果HTML标记中没有语言信息。
要表明文档可用于其他语言,可以使用类似于标签的方式。
 <link rel="alternate" hreflang="de" href="foobar.de.html">

请参见HTML 4.01规范中的12.3.3链接和搜索引擎

不能保证这会产生任何效果。它可能会影响搜索引擎,但不会比普通链接更有效。一些旧版本的浏览器有根据此类元素选择文档备选版本的命令,但该功能似乎已被删除。


你所说的文档是指HTML文档还是整个网站本身?我通常用英语编写代码,比如div的名称等,但实际内容却是另一种语言。使用英语还是其他语言才是正确的方式呢? - Da. Syntex
1
这里讨论的属性指定了HTML文档(页面)内容的主要语言。它主要涉及元素中的文本内容,但理论上也涉及元素的属性。然而,这是指具有基本语言内容的属性,如“title”和“alt”属性,而不是像“name”或“id”这样的属性;它们的值类似于标识符。因此,您应该声明实际内容的语言。 - Jukka K. Korpela

4

你不能像这样使用它。

你需要使用包含所有所需字符的编码(例如支持整个Unicode范围的UTF-8),或者使用命名实体或数字引用来包括在使用中的编码之外的字符。

http://bytes.com/topic/html-css/answers/154652-multiple-languages-one-document

更新

如果使用HTML5,您可以为每个元素使用lang属性。这意味着,如果您有一个包含中文的div,只需为该div定义一个lang="zh-CN"属性,例如。 ( 什么是HTML5替代过时的meta http-equiv=content-language的方法? )


3
答案的第一部分与问题无关:问题不涉及编码或字符表示。第二部分也与HTML5无关。 - Jukka K. Korpela

3

正如其他海报和W3C所指出的,您不能在html标记的lang属性中指定多个语言。

但是,如回答“混合语言页面应使用什么 lang 属性值?”中所示,您可以使用divspan等元素标记页面上使用的不同语言(或对其他语言的引用)的不同部分。

此外,您可以创建描述页面预期受众的多种语言​​的元数据,而不是特定文本范围的语言。您可以通过让服务器在HTTP Content-Language标题中发送信息来实现这一点。如果您的预期受众会说多种语言,则HTTP标题允许您使用逗号分隔的语言列表。以下是声明资源为英语,印地语和旁遮普语混合物的HTTP标题示例,取自W3C的文章“在HTML中声明语言”

Content-Language: en, hi, pa
注意:html 标签上始终应该使用语言属性。语言属性始终会覆盖 HTTP 标头信息。HTTP 标头应该仅提供关于整个文档预期受众的元数据,而 html 标签上的语言属性应该用于声明多语言观众中内容的默认语言。
有关此方法的详细信息,请参见 HTTP 标头,meta 元素和语言信息。有关一般语言声明和标记,请参见在HTML中声明语言

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接