hreflang 和 lang 属性的语义使用
Semantic use of hreflang and lang attribute
这不是 SEO 问题。
我很好奇如何以语义正确的方式对所用语言进行标记 HTML。如果我的标记有误,请纠正我。
我的问题是:如果我已经在 link
标签中使用了 hreflang
属性,我还需要在 html
标签中使用 lang
属性吗?
这两个指令在语义上是否不同?我的意思是:两个示例中 link
标记中的自引用在语义上是否会被理解为指示文档的语言?
下面的代码示例可能会稍微澄清我的问题:
英文网页示例
http://example.com/en/
<!DOCTYPE html>
<html lang="en">
<head>
<title>English webpage</title>
<link rel="canonical" href="http://example.com/en">
<link rel="alternate" href="http://example.com/en/" hreflang="en">
<link rel="alternate" href="http://example.com/nl/" hreflang="nl">
<link rel="alternate" href="http://example.com/en/" hreflang="x-default">
</head>
<body>
<p>This is a webpage written in English.
This page is also available in Dutch.
The default language of this page is English.
</body>
</html>
荷兰语网页示例
http://example.com/nl/
<!DOCTYPE html>
<html lang="nl">
<head>
<title>Nederlandse webpagina</title>
<link rel="canonical" href="http://example.com/nl">
<link rel="alternate" href="http://example.com/en/" hreflang="en">
<link rel="alternate" href="http://example.com/nl/" hreflang="nl">
<link rel="alternate" href="http://example.com/en/" hreflang="x-default">
</head>
<body>
<p>Dit is een Nederlandstalige web pagina.
Deze pagina is beschikbaar in het Engels.
De standaardtaal van deze pagina is Engels.
</body>
</html>
您应该始终在 html
元素上提供 lang
属性。
与您的案例相关的两个原因:
HTML 规范描述了 how the language of a node gets determined。 hreflang
属性在这里不起作用。
如果您不在 html
元素上提供 lang
,此节点没有语言。
alternate
+hreflang
link 仅当 link
-hreflang
不同于 html
-lang
的值:
If the alternate
keyword is used with the hreflang
attribute, and that attribute’s value differs from the root element’s language, it indicates that the referenced document is a translation.
如果您不在 html
元素上提供 lang
,则 alternate
+hreflang
link 不会考虑指向翻译。
即使用户代理通过考虑自引用¹ alternate
+hreflang
links 来推断文档的语言,在某些情况下也可能会失败:
如果 HTML 文档在本地打开,它不再具有 HTTP URL,因此用户代理无法推断 alternate
+ hreflang
link 指的是这个文档。
如果 HTML 文档通过不同的 URL 检索(例如,使用跟踪参数),alternate
+hreflang
link 不再引用当前的 URL,因此用户代理无法推断它也适用于此 URL。
(使用 canonical
link,这两种情况都可以缓解,但这是用户代理必须支持的另一件事。并非所有人都支持。)
¹ 严格来说,自引用 alternate
+hreflang
hyperlink 不是语义的,因为 alternate
被定义为引用 "an alternate representation of the current document" ,但文档当然不是自身的 alternate 表示。但是,由于 Google 搜索记录了它的用途,现在看到此标记很常见。
这不是 SEO 问题。
我很好奇如何以语义正确的方式对所用语言进行标记 HTML。如果我的标记有误,请纠正我。
我的问题是:如果我已经在 link
标签中使用了 hreflang
属性,我还需要在 html
标签中使用 lang
属性吗?
这两个指令在语义上是否不同?我的意思是:两个示例中 link
标记中的自引用在语义上是否会被理解为指示文档的语言?
下面的代码示例可能会稍微澄清我的问题:
英文网页示例
http://example.com/en/
<!DOCTYPE html>
<html lang="en">
<head>
<title>English webpage</title>
<link rel="canonical" href="http://example.com/en">
<link rel="alternate" href="http://example.com/en/" hreflang="en">
<link rel="alternate" href="http://example.com/nl/" hreflang="nl">
<link rel="alternate" href="http://example.com/en/" hreflang="x-default">
</head>
<body>
<p>This is a webpage written in English.
This page is also available in Dutch.
The default language of this page is English.
</body>
</html>
荷兰语网页示例
http://example.com/nl/
<!DOCTYPE html>
<html lang="nl">
<head>
<title>Nederlandse webpagina</title>
<link rel="canonical" href="http://example.com/nl">
<link rel="alternate" href="http://example.com/en/" hreflang="en">
<link rel="alternate" href="http://example.com/nl/" hreflang="nl">
<link rel="alternate" href="http://example.com/en/" hreflang="x-default">
</head>
<body>
<p>Dit is een Nederlandstalige web pagina.
Deze pagina is beschikbaar in het Engels.
De standaardtaal van deze pagina is Engels.
</body>
</html>
您应该始终在 html
元素上提供 lang
属性。
与您的案例相关的两个原因:
HTML 规范描述了 how the language of a node gets determined。
hreflang
属性在这里不起作用。如果您不在
html
元素上提供lang
,此节点没有语言。alternate
+hreflang
link 仅当link
-hreflang
不同于html
-lang
的值:If the
alternate
keyword is used with thehreflang
attribute, and that attribute’s value differs from the root element’s language, it indicates that the referenced document is a translation.如果您不在
html
元素上提供lang
,则alternate
+hreflang
link 不会考虑指向翻译。
即使用户代理通过考虑自引用¹ alternate
+hreflang
links 来推断文档的语言,在某些情况下也可能会失败:
如果 HTML 文档在本地打开,它不再具有 HTTP URL,因此用户代理无法推断
alternate
+hreflang
link 指的是这个文档。如果 HTML 文档通过不同的 URL 检索(例如,使用跟踪参数),
alternate
+hreflang
link 不再引用当前的 URL,因此用户代理无法推断它也适用于此 URL。
(使用 canonical
link,这两种情况都可以缓解,但这是用户代理必须支持的另一件事。并非所有人都支持。)
¹ 严格来说,自引用 alternate
+hreflang
hyperlink 不是语义的,因为 alternate
被定义为引用 "an alternate representation of the current document" ,但文档当然不是自身的 alternate 表示。但是,由于 Google 搜索记录了它的用途,现在看到此标记很常见。