36

我想为一个文档确定不止一种语言,因为它有不止一种语言可用。如果我使用:

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

这不是 W3C 有效的,验证器说我应该在根的lang属性中定义它,但是这个属性只支持一种语言:

<html lang="en">

工作,但不是

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

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

4

5 回答 5

26

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

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

  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

于 2014-01-20T23:46:24.813 回答
4

Content-Language HTTP 标头的含义以及它的meta标记代理项的含义是,它声明了文档的语言或目标受众的语言(相关的 RFC 是矛盾的),而不是其他一些文档的语言(如当前文件的翻译)。header 的实际作用很小,如果HTML 标记中没有语言信息,可能仅限于使用命名为文档语言的第一种语言。

要表明文档有其他语言版本,您可以使用如下标签

 <link rel="alternate" hreflang="de" href="foobar.de.html">

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

无法保证这会产生任何影响。它可能会影响搜索引擎,但不会超过普通链接。一些旧的浏览器版本具有基于此类元素选择文档替代版本的命令,但该功能似乎已被删除。

于 2012-08-28T06:04:32.670 回答
3

您使用什么 HTML 版本?在HTML 4.01中,您使用Content-Language多种语言是有效的。在HTML5中,它不是.

但即使对于 HTML 4.01,也不推荐使用Content-Languagefor元素: HTTP 标头、元元素和语言信息 (W3C)meta

于 2012-08-28T21:12:52.773 回答
3

你不能这样使用它。

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

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

更新

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

于 2012-08-27T22:19:40.550 回答
1

正如其他海报和 W3C 所指出的那样,您不能在标签的lang属性中指定一种以上的语言。html

但是,如“我应该为混合语言页面使用什么属性值?”的答案所示。div,您可以使用和标签等元素标记页面的不同部分,span以指示页面上使用的不同语言(或对其他语言的引用)。

此外,您可以创建元数据,为页面的目标受众描述多种语言,而不是特定文本范围的语言。为此,您需要让服务器发送 HTTPContent-Language标头中的信息。如果您的目标受众会说一种以上的语言,则 HTTP 标头允许您使用以逗号分隔的语言列表。

下面是一个 HTTP 标头示例,该标头声明资源是英语、印地语和旁遮普语的混合体,来自 W3C 的文章在 HTML 中声明语言

Content-Language: en, hi, pa

请注意:由于您应该始终在html标签上使用语言属性,并且语言属性始终覆盖 HTTP 标头信息,因此这确实成为一个很好的点。HTTP 标头应仅用于提供有关整个文档的预期受众的元数据,并且html应使用标记上的语言属性来声明内容的默认语言。

有关最后一种技术的详细信息,请参阅HTTP 标头、meta元素和语言信息。有关一般语言声明和标记,请参阅在 HTML 中声明语言

于 2020-04-03T21:11:32.367 回答