【问题标题】:Semantic use of hreflang and lang attributehreflang 和 lang 属性的语义使用
【发布时间】:2018-05-06 10:21:39
【问题描述】:

不是一个 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 multilingual semantic-markup hreflang


    【解决方案1】:

    您应该始终在html 元素上提供lang 属性。

    与您的案例相关的两个原因:

    • HTML 规范描述了how the language of a node gets determinedhreflang 属性在这里不起作用。

      如果您不在html 元素上提供lang,则此节点没有语言。

    • 仅当link-hreflang 的值与html-lang 的值不同时,alternate+hreflang 链接才会被解释为指向当前文档的翻译:

      如果alternate 关键字与hreflang 属性一起使用,并且该属性的值与根元素的语言不同,则表明引用的文档是翻译。

      如果您未在 html 元素上提供 lang,则 alternate+hreflang 链接不会被视为指向翻译。


    即使用户代理通过考虑自引用¹alternate+hreflang 链接来推断文档的语言,在某些情况下也可能会失败:

    • 如果 HTML 文档在本地打开,它不再有 HTTP URL,因此用户代理无法推断出alternate+hreflang 链接指向此文档。

    • 如果通过不同的 URL(例如,使用跟踪参数)检索 HTML 文档,alternate+hreflang 链接不再引用当前 URL,因此用户代理无法推断出它也适用于这个 URL。

    (使用canonical 链接,这两种情况都可以得到缓解,但这是用户代理必须支持的另一件事。并非所有人都这样做。)


    ¹ 严格来说,自引用的alternate+hreflang 超链接没有语义,因为alternate 被定义为引用“当前文档的替代表示”,但文档当然不是替代自身的表示。但是,作为Google Search documents its use,现在可以看到此标记。

    【讨论】:

    • 感谢您的详细解答。
    猜你喜欢
    • 2019-10-17
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多