我想为一个文档确定不止一种语言,因为它有不止一种语言。如果我使用:
<meta http-equiv="content-language" content="en,de,fr" />
这不是 W3C 有效的,验证器说我应该在根元素的 lang
属性,但这个属性只支持一种语言。
<html lang="en">
作品,但不支持
<html lang="de,en,fr">
那么我应该在哪里定义它呢?
所有的属性都只支持一种语言,所以我认为你应该只定义一种语言;应该设置最重要的语言。如果你在一个文档上有多种语言,这是做不到的,所以这里有信息来解决你的问题。
lang和xml:lang属性不允许你在一个文档中指定多种语言。所以如果你要写一个有多种语言的网页,你有两个选择。
lang
属性,然后使用 lang
元素上的属性定义 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.orgTR2007NOTE-i18n-html-tech-lang-20070412#ri20060630.133619987
内容-语言HTTP头的含义,因此其 meta
标签的代用,是它声明了文档的语言,或者是预期受众的语言(相关的RFC是矛盾的)。不 其他一些文档的语言(比如当前文档的翻译)。页眉的实际效果不大,可能只限于使用第一个命名的语言作为文档的语言。如果 HTML标记中没有语言信息。
为了表示一个文档是可以用其他语言编写的,您可以使用类似于
<link rel="alternate" hreflang="de" href="foobar.de.html">
请看 12.3.3 链接和搜索引擎 在HTML 4.01规范中。
我们不能保证这会有任何影响。它可能会影响搜索引擎,但不会比普通链接的影响更大。一些旧版本的浏览器有根据这样的元素来选择文档的替代版本的命令,但这个功能似乎已经被取消了。
你使用的是什么HTML版本?在 HTML 4.01,您使用的 Content-Language
多语言是 有效. 在 HTML5, 不是.
但即使是在HTML 4.01中,使用了 Content-Language
对于 meta
元素,不建议使用。HTTP头、元元素和语言信息(W3C)
你不能这样使用它。
你必须使用一个包含所有所需字符的编码(如UTF-8,它支持整个Unicode范围),或者使用命名实体或数字引用来包含编码之外的字符。
http:/bytes.comtopichtml-cssanswers154652-multiple-languages-one-document。
更新
如果使用HTML5,那么你可以为每个元素使用lang。也就是说,如果你有一个包含中文普通话的div,只要为这个div定义一个属性lang="zh-CN "就可以了,就像.net一样。什么是HTML5替代过时的元http-equiv=content-language。 )
正如其他发帖者和W3C所指出的,你不能在 "语言 "中指定一种以上的语言。lang
的属性 html
标签。
然而,如 这个答案 "我应该为一个混合语言的页面使用什么属性值?",你可以用元素标记页面的不同部分,如 div
和 span
标签来表示页面上使用的不同语言(或对其他语言的引用)。
此外,您还可以创建元数据,为页面的预期受众描述多种语言,而不是特定范围的文本语言。您可以通过让服务器在HTTP中发送信息来实现。Content-Language
头。如果你的目标受众会说一种以上的语言,HTTP头允许你使用逗号分隔的语言列表。
下面是一个HTTP头的例子,它声明资源是英语、印地语和旁遮普语的混合体,来自W3C的文章。在HTML中声明语言:
Content-Language: en, hi, pa
请注意。 因为你应该总是使用语言属性来处理。html
标签,而语言属性总是覆盖HTTP头信息,这确实成为一个细微的问题。HTTP头应该只用来提供关于整个文档的预期受众的元数据,而语言属性在 html
标签应该用来声明内容的默认语言。
关于最后一种技术的细节,请参见 HTTP头文件。meta
元素和语言信息. 关于一般的语言声明和标记,请参阅 在HTML中声明语言.