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>

据此我有几个语义标记问题:

  1. SEO 是否需要这两条规则?或者,如果我的网站上有语言切换器,则不再需要 head 中的链接?

  2. 假设我在页面上:example.com/pl/kontakthead(或nav)中的翻译链接应该指向:example.com/en/contact(直接翻译),还是仅指向example.com/en(英文主页)?

  3. 更具体的情况呢:example.com/pl/aktualnosci/id/101。 'aktualnosci'表示新闻。如您所见,并非所有新闻都可以翻译成每种语言。有时仅根据参数很难预测完美的翻译 URL。所以问题是:翻译link(或nav)应该在哪里指向这个URL:example.com/pl/artykul/id/101,什么时候:

    1. 我们不确定该资源是否已翻译?
    2. 我们不完全知道翻译 URL?
    3. 资源 100% 未翻译?

我希望我的问题很清楚。但我再举一个例子:有人在 example.com/en/news/2015/03/02/Whosebug-rules 页面上,这条新闻没有翻译成波兰语。 是不是写错了:

<link rel="alternate" hreflang="pl" href="/pl/aktualnosci">

作为翻译?当然这个页面不是翻译,而只是例如所有翻译新闻的列表。

从语义上来说,这是一个错误,因为这不是翻译,但从用户体验的角度来看,它很棒,因为它指向最近的翻译资源,让用户的生活更轻松.

  1. 由于 rel 属性定义了 linked 文档的关系,如果您在锚标记中使用它,则 [=24= 中不需要 link 标记].
  2. 翻译 link 应始终指向当前页面的翻译版本,而不是网站 (pl/kontakt -> en/contact)。
  3. 如果资源未翻译,则省略 link 翻译(显然您必须在生成页面时检查翻译)。如果 URL 被翻译,那么翻译 link 必须指向目标语言的 URL(同上,必须提前检查翻译)。

对于 UX,如果我正在阅读今天的新闻,当我点击一个 link 承诺以我自己的语言显示它时,我最不想找到的是昨天的新闻翻译,相反,我宁愿在导航之前了解没有可用的翻译(灰色禁用 link 可能是最用户友好的)。所以最好遵循语义并保持简单,而不是试图呈现 counter-intuitive UX。

alternate+hreflanglink 对比 a

从语义上讲,使用哪一个都没有区别。在这两种情况下,link link 都是页面的翻译。

但可以想象,消费者(例如搜索引擎)决定忽略 a 元素上的 alternate+hreflang,例如因为某些网站允许在用户中使用此标记注释。用户很少可以编辑 head,因此他们可能只会在 head.

中的 link 元素上查找 alternate+hreflang

除非您有充分的理由不这样做,否则只需同时提供:

  • bodya 元素)
  • 中的语言切换器,特别适合您的人类用户
  • 翻译 link 只检查 headlink 元素)
  • 的机器人

页面与站点

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 标记。