我通常使用这个:<html lang="en">
。
但是,我正在开发一个使用两种语言的网站,并将它们混合在同一个句子或标题中。
在这种情况下,上述代码如何?我可以使用<html lang="lang1 lang2">
吗?
答案 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”)显示了目标页面的语言(西班牙语),但是关联的标题属性包含了以下语言的提示:当前页面(英语为“西班牙语”):
上面的标记应如下所示,其中span
元素继承了en
元素的默认html
设置:
<span title="Spanish"><a lang="es" href="qa-html-language-declarations.es">Español</a></span>
如果要指定某些内容的语言,但周围没有标记,请在内容周围使用诸如span
或div
之类的元素。这是一个示例:
<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中声明字符编码”。