HTML5: hreflang 应该总是指向直接翻译吗?
HTML5: should hreflang always point to a direct translation?
对于多语言网站,将这种链接放在头部是一个很好的做法:
<head>
<link rel="alternate" hreflang="en" href="/en">
</head>
但是,according to an answer to the question Semantic markup for language switcher,语言切换器应该类似于:
<nav>
<h1>Translations of this page</h1> <!-- could be omitted → usability question -->
<ul>
<li>English</li> <!-- could be omitted → usability question -->
<li><a rel="alternate" href="/pl" hreflang="pl" lang="pl">Polski</a></li>
<li><a rel="alternate" href="/de" hreflang="de" lang="de">Deutsch</a></li>
</ul>
</nav>
据此我有几个语义标记问题:
SEO 是否需要这两条规则?或者,如果我的网站上有语言切换器,则不再需要 head
中的链接?
假设我在页面上:example.com/pl/kontakt
。 head
(或nav
)中的翻译链接应该指向:example.com/en/contact
(直接翻译),还是仅指向example.com/en
(英文主页)?
更具体的情况呢:example.com/pl/aktualnosci/id/101
。 'aktualnosci'表示新闻。如您所见,并非所有新闻都可以翻译成每种语言。有时仅根据参数很难预测完美的翻译 URL。所以问题是:翻译link
(或nav
)应该在哪里指向这个URL:example.com/pl/artykul/id/101
,什么时候:
- 我们不确定该资源是否已翻译?
- 我们不完全知道翻译 URL?
- 资源 100% 未翻译?
我希望我的问题很清楚。但我再举一个例子:有人在 example.com/en/news/2015/03/02/Whosebug-rules
、 页面上,这条新闻没有翻译成波兰语。 是不是写错了:
<link rel="alternate" hreflang="pl" href="/pl/aktualnosci">
作为翻译?当然这个页面不是翻译,而只是例如所有翻译新闻的列表。
从语义上来说,这是一个错误,因为这不是翻译,但从用户体验的角度来看,它很棒,因为它指向最近的翻译资源,让用户的生活更轻松.
- 由于
rel
属性定义了 linked 文档的关系,如果您在锚标记中使用它,则 [=24= 中不需要 link 标记].
- 翻译 link 应始终指向当前页面的翻译版本,而不是网站 (pl/kontakt -> en/contact)。
- 如果资源未翻译,则省略 link 翻译(显然您必须在生成页面时检查翻译)。如果 URL 被翻译,那么翻译 link 必须指向目标语言的 URL(同上,必须提前检查翻译)。
对于 UX,如果我正在阅读今天的新闻,当我点击一个 link 承诺以我自己的语言显示它时,我最不想找到的是昨天的新闻翻译,相反,我宁愿在导航之前了解没有可用的翻译(灰色禁用 link 可能是最用户友好的)。所以最好遵循语义并保持简单,而不是试图呈现 counter-intuitive UX。
alternate
+hreflang
:link
对比 a
从语义上讲,使用哪一个都没有区别。在这两种情况下,link link 都是页面的翻译。
但可以想象,消费者(例如搜索引擎)决定忽略 a
元素上的 alternate
+hreflang
,例如因为某些网站允许在用户中使用此标记注释。用户很少可以编辑 head
,因此他们可能只会在 head
.
中的 link
元素上查找 alternate
+hreflang
除非您有充分的理由不这样做,否则只需同时提供:
body
(a
元素) 中的语言切换器,特别适合您的人类用户
- 翻译 link 只检查
head
(link
元素) 的机器人
页面与站点
alternate
+hreflang
link 是 defined to point to a translated document,不是站点。
页面未翻译
如果 /pl/artykul/id/101
没有被翻译成其他语言(或者你不确定它是什么,或者你不知道 URL),就不要使用 alternate
+hreflang
.
是的,在这种情况下 link 到已翻译的 父级 页面是错误的:/pl/aktualnosci
不是 [=32] 的翻译=].
当然,出于可用性原因,您仍然可以提供这样的 link,但您不应为此 link 使用 alternate
+hreflang
标记。
对于多语言网站,将这种链接放在头部是一个很好的做法:
<head>
<link rel="alternate" hreflang="en" href="/en">
</head>
但是,according to an answer to the question Semantic markup for language switcher,语言切换器应该类似于:
<nav> <h1>Translations of this page</h1> <!-- could be omitted → usability question --> <ul> <li>English</li> <!-- could be omitted → usability question --> <li><a rel="alternate" href="/pl" hreflang="pl" lang="pl">Polski</a></li> <li><a rel="alternate" href="/de" hreflang="de" lang="de">Deutsch</a></li> </ul> </nav>
据此我有几个语义标记问题:
SEO 是否需要这两条规则?或者,如果我的网站上有语言切换器,则不再需要
head
中的链接?假设我在页面上:
example.com/pl/kontakt
。head
(或nav
)中的翻译链接应该指向:example.com/en/contact
(直接翻译),还是仅指向example.com/en
(英文主页)?更具体的情况呢:
example.com/pl/aktualnosci/id/101
。 'aktualnosci'表示新闻。如您所见,并非所有新闻都可以翻译成每种语言。有时仅根据参数很难预测完美的翻译 URL。所以问题是:翻译link
(或nav
)应该在哪里指向这个URL:example.com/pl/artykul/id/101
,什么时候:- 我们不确定该资源是否已翻译?
- 我们不完全知道翻译 URL?
- 资源 100% 未翻译?
我希望我的问题很清楚。但我再举一个例子:有人在 example.com/en/news/2015/03/02/Whosebug-rules
、 页面上,这条新闻没有翻译成波兰语。 是不是写错了:
<link rel="alternate" hreflang="pl" href="/pl/aktualnosci">
作为翻译?当然这个页面不是翻译,而只是例如所有翻译新闻的列表。
从语义上来说,这是一个错误,因为这不是翻译,但从用户体验的角度来看,它很棒,因为它指向最近的翻译资源,让用户的生活更轻松.
- 由于
rel
属性定义了 linked 文档的关系,如果您在锚标记中使用它,则 [=24= 中不需要 link 标记]. - 翻译 link 应始终指向当前页面的翻译版本,而不是网站 (pl/kontakt -> en/contact)。
- 如果资源未翻译,则省略 link 翻译(显然您必须在生成页面时检查翻译)。如果 URL 被翻译,那么翻译 link 必须指向目标语言的 URL(同上,必须提前检查翻译)。
对于 UX,如果我正在阅读今天的新闻,当我点击一个 link 承诺以我自己的语言显示它时,我最不想找到的是昨天的新闻翻译,相反,我宁愿在导航之前了解没有可用的翻译(灰色禁用 link 可能是最用户友好的)。所以最好遵循语义并保持简单,而不是试图呈现 counter-intuitive UX。
alternate
+hreflang
:link
对比 a
从语义上讲,使用哪一个都没有区别。在这两种情况下,link link 都是页面的翻译。
但可以想象,消费者(例如搜索引擎)决定忽略 a
元素上的 alternate
+hreflang
,例如因为某些网站允许在用户中使用此标记注释。用户很少可以编辑 head
,因此他们可能只会在 head
.
link
元素上查找 alternate
+hreflang
除非您有充分的理由不这样做,否则只需同时提供:
body
(a
元素) 中的语言切换器,特别适合您的人类用户
- 翻译 link 只检查
head
(link
元素) 的机器人
页面与站点
alternate
+hreflang
link 是 defined to point to a translated document,不是站点。
页面未翻译
如果 /pl/artykul/id/101
没有被翻译成其他语言(或者你不确定它是什么,或者你不知道 URL),就不要使用 alternate
+hreflang
.
是的,在这种情况下 link 到已翻译的 父级 页面是错误的:/pl/aktualnosci
不是 [=32] 的翻译=].
当然,出于可用性原因,您仍然可以提供这样的 link,但您不应为此 link 使用 alternate
+hreflang
标记。