我应该为混合语言页面使用什么属性值?

时间:2011-08-16 10:35:30

标签: html html5 lang

我通常使用这个:<html lang="en">

但是,我正在开发一个使用两种语言的网站,并将它们混合在同一个句子或标题中。

在这种情况下,上述代码如何?我可以使用<html lang="lang1 lang2">吗?

4 个答案:

答案 0 :(得分:77)

据我在阅读HTML5规范时可以看出lang属性:

  

值必须是有效的BCP 47语言标记或空字符串

来源:http://www.w3.org/TR/html5/dom.html#the-lang-and-xml:lang-attributes

在规范中没有提到语言字符串数组,我发现的每个例子都使用单个语言字符串。

这是有道理的,因为除非我们正在创建一种新的混合语言,否则实际上一个特定的部分只能使用一种语言。

由于lang属性对所有HTML元素都有效,因此您可以将特定于语言的代码包装在新标记中,以指示其语言。

<html lang="en">
[...]
<body>
<h1>I am a heading <span lang="de-DE">Eine Überschrift</span></h1>
</body>
</html>

答案 1 :(得分:3)

根据我的理解,您应该可以使用<html lang="mul">来表示多种语言

  

从IANA语言子标签注册表中选择子标签。

源; https://www.w3.org/TR/2007/NOTE-i18n-html-tech-lang-20070412/#ri20030112.224623362

列表中有一个名为子标签:mul

的子标签

来源:http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry

但是我认为你不能确切地指定你在html元素中混合的语言。但是,正如Jamie所写,您可以为页面上的不同元素指定不同的lang属性。

ISO 639-3中确实存在四种特殊语言代码,所有这些代码在IANA子标签注册表中也有效; https://en.wikipedia.org/wiki/ISO_639-3#Special_codes

但是,我怀疑这会得到Google搜索引擎的良好支持。

答案 2 :(得分:2)

在2020年4月添加此答案,以提供W3C(W3.org)的最新指南...

首先,不,您不能使用<html lang="lang1 lang2">,因为它无法正确验证。这是通过html标签的language属性中的一种以上语言(英语和斯瓦希里语)通过W3's Nu Html Checker进行验证时的结果。不管有没有逗号,都会导致此错误:

错误:元素en fr上属性lang的错误值html:语言 子标签en swh不是有效的语言子标签。

<html lang="en swh">↩</html>

如果要使用多种语言声明多语种网页的语言,则以下是基于W3C Declaring language in HTML的最新语言:

快速答案

始终在html标记上使用language属性来声明默认值 页面中文字的语言。当页面包含其他内容时 语言,请在该内容周围的元素中添加语言属性。

对于用作HTML的页面使用lang属性,对于用作XML的页面使用xml:lang属性>。对于XHTML 1.x和HTML5多语言文档,请同时使用 在一起。

使用IANA Language Subtag Registry中的语言标签。您可以使用>非官方Language Subtag Lookup工具来找到子标签。

使用嵌套元素来照顾同一个内容和属性值 元素使用不同的语言。

如果元素内容和属性值使用不同的语言怎么办?

在W3C网站的下图中,链接文本使用目标页面的语言(“Español”)显示了目标页面的语言(西班牙语),但是关联的标题属性包含了以下语言的提示:当前页面(英语为“西班牙语”):

enter image description here

上面的标记应如下所示,其中span元素继承了en元素的默认html设置:

<span title="Spanish"><a lang="es" href="qa-html-language-declarations.es">Español</a></span>

如果没有任何元素可以将属性挂起?

如果要指定某些内容的语言,但周围没有标记,请在内容周围使用诸如spandiv之类的元素。这是一个示例:

<p>You'd say that in Chinese as <span lang="zh-Hans">中国科学院文献情报中心</span>.</p>

如何为一种以上的受众语言指定元数据?

获取服务器以在HTTP Content-Language标头中发送信息。如果您的目标受众说多种语言,则HTTP标头可让您使用逗号分隔的语言列表。

下面是一个HTTP标头的示例,该标头声明资源是英语,北印度语和旁遮普语的混合体:

Content-Language: en, hi, pa

请注意,如果从硬盘驱动器,磁盘或其他非基于服务器的位置访问您的页面,则此方法无效。当前,在页面内部没有广泛使用这种元数据的方法。

过去,许多人使用meta属性设置为http-equiv的{​​{1}}元素。由于该元素的长期混乱和不一致的实现,HTML5规范使此在HTML中不符合要求,因此您不应再使用它。

有关详细信息,请参见以下链接:

答案 3 :(得分:-3)

你可以这样使用。

对于HTML 5使用:

有关字符编码的详细信息,请参阅“在HTML中声明字符编码”。