HTML内容语言的元标记

83

以下两个HTML meta标签在指定西班牙语网页内容方面有何区别:

<meta name="language" content="Spanish">

<meta http-equiv="content-language" content="es">

MDN声称http-equiv变体是不良实践:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Language - Christophe Roussy
6个回答

128

<meta name="language" content="Spanish">

这并没有在任何规范中定义(包括HTML5草案)。

<meta http-equiv="content-language" content="es">

这是真正的HTTP标题的简化版本,应该在标题中表达。例如:

Content-language: es
Content-type: text/html;charset=UTF-8

它表明该文档是为西班牙语使用者而设计的(但这并不意味着该文档是用西班牙语写的;例如,它可以作为面向西班牙语使用者的语言课程的一部分用英语编写)。

来自规范

Content-Language实体头字段描述了预期受众的自然语言。请注意,这可能不等同于实体正文中使用的所有语言。

如果您想说明一个文档是用西班牙语编写的,则使用

<html lang="es">

我在极少数情况下处理多语言网站时也会做类似的事情。 - Quentin
23
这不是真正的HTTP头的简化版……如果HTML文档是从磁盘打开或嵌入邮件中的,则不会有HTTP头。因此,meta http-equiv 存在,并且应该与HTTP头一起设置。不幸的是,有两个地方可以指定语言/编码,并且W3C/IETF没有明确的解决方案。 - mip
2
说到标准,这里有一份来自W3C的相当新的出版物,名为“HTTP头、元素和语言信息”,它确认了这个答案,链接在此:http://www.w3.org/International/questions/qa-http-and-lang。 - Simon Mourier

50

你要求了比较,但是这两个并不能完全相比。

请注意,<meta http-equiv="content-language" content="es"> 已经过时,在HTML5中已被删除。它用于指定“文档范围的默认语言”,其 http-equiv 属性使其成为一个 pragma directive(模拟未从服务器发送的 Content-Language HTTP响应头,因为它无法覆盖真实的响应头)。

关于 <meta name="language" content="Spanish">,几乎找不到任何可靠的信息。它是非标准的,可能是作为 SEO makeshift 发明的。

然而,HTML5 W3C 推荐 鼓励作者在 html 根元素上使用 lang 属性(属性值必须是有效的 BCP 47 语言标签):
<!DOCTYPE html>
<html lang="es-ES">
    <head>

无论如何,如果您想指定内容语言以指导搜索引擎机器人,您应该考虑来自Google Search Console Help on multilingual sites的以下引用:
“Google仅使用页面上可见的内容来确定其语言。我们不使用任何代码级别的语言信息,例如lang属性。”

2
您的Google引用对我来说非常有意义,谢谢。 - Anoyz

18

谷歌推荐使用hreflang,详见更多信息

示例:

<link rel="alternate" href="http://example.com/en-ie" hreflang="en-ie" />
<link rel="alternate" href="http://example.com/en-ca" hreflang="en-ca" />
<link rel="alternate" href="http://example.com/en-au" hreflang="en-au" />
<link rel="alternate" href="http://example.com/en" hreflang="en" />

13
我喜欢这个提示,但它与原帖无关。它是用来告诉网络爬虫当前页面的替代版本在哪里可以找到的,而不是指示当前页面的语言。 - Swiss Mister
同瑞士先生的意见一致。这是一个有用的提示,但您可能不想将当前页面列在“备选项”列表中。 - HoldOffHunger
2
@SwissMister @HoldOffHunger 页面上列出“替代页面”的列表应该将当前页面的替代页面放在这个替代标签列表的顶部。如果所有页面都有相同的内容,比如另一个国家或语言的内容,最好告诉搜索引擎有关替代页面的信息,因为这将帮助搜索引擎了解您的内容应该在搜索结果中显示在哪里。例如,一个带有en-ca的页面和一个带有nl-nl的页面,en-ca将包含在加拿大的搜索结果中,具有替代nl-nl的页面可以在荷兰的搜索结果中找到。 - jagb
谷歌链接确实提到应该添加当前语言的替代标签,但似乎并不一定要在顶部。顺序似乎并不重要。 - Marten Koetsier
1
值得注意的是,Google 还说:“确保页面语言明显。Google 使用您网页的可见内容来确定其语言。我们不使用任何代码级别的语言信息,例如 lang 属性或 URL。您可以通过在每个页面上使用单一语言进行内容和导航,并避免并排翻译,来帮助 Google 正确地确定语言。”(摘自“管理多地区和多语言站点”) - Fabien Snauwaert

6

Html5建议使用<html lang="es-ES">标签。

小写的lang标签只指定了语言代码,大写的则指定了国家代码。

这对于ie.Chrome非常有用,当浏览器建议翻译网页内容(例如Google翻译)时。


3

另一个语言的元标签是 og:locale,您可以为社交媒体定义 og:locale 元标签。

<meta property="og:locale" content="en" />

你可以在 https://ogp.me/ 阅读关于 Open Graph 标签的内容。


你应该详细说明一下,你没有提及它的任何功能。https://ogp.me/ - Christophe Roussy

-1

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