Signaler les versions localisées de votre page à Google

Si vous proposez plusieurs versions linguistiques ou régionales d'une même page, vous pouvez indiquer ces variantes à Google. De cette façon, les internautes seront redirigés vers la version linguistique ou régionale la plus appropriée dans la recherche Google.

Si vous n'informez pas Google, il se peut que nous puissions tout de même détecter les différentes versions linguistiques de votre page. Toutefois, il est généralement préférable de nous indiquer explicitement les pages spécifiques aux langues ou aux régions que vous couvrez.

Voici quelques exemples de scénarios où il conseillé de nous communiquer vos versions linguistiques ou régionales :

  • La langue du contenu principal ne change pas et seul le modèle de la page est traduit, comme les éléments de navigation et le pied de page. C'est souvent le cas sur les pages dont le contenu est généré par l'utilisateur, comme un forum.
  • Votre contenu est identique dans une langue donnée, à l'exception de quelques variantes régionales. Par exemple, un contenu en français peut cibler les internautes de Belgique, de France et de Suisse.
  • Le contenu du site est traduit dans son intégralité dans plusieurs langues. Chaque page est disponible en allemand et en français, par exemple.

Les versions localisées d'une page ne sont considérées comme des doublons que si le contenu principal de la page n'est pas traduit.

Méthodes à suivre pour indiquer des variantes de pages

Trois approches permettent d'indiquer plusieurs versions linguistiques ou régionales d'une page à Google :

Du point de vue de Google, les trois méthodes sont équivalentes. Vous pouvez choisir celle qui convient le mieux à votre site. Bien que vous puissiez utiliser les trois méthodes simultanément, cela ne présente aucun avantage dans le cadre de la Recherche Google (et vous pourriez avoir beaucoup plus de difficulté pour gérer trois implémentations au lieu d'en choisir une seule).

Utilisez hreflang pour indiquer à Google les variantes de votre contenu. Nous saurons ainsi que ces pages sont des variantes localisées du même contenu. Google n'utilise pas hreflang ni l'attribut HTML lang pour détecter la langue d'une page. À la place, nous utilisons des algorithmes pour déterminer la langue.

Consignes applicables à toutes les méthodes

  • Chaque version linguistique doit se référencer elle-même et indiquer aussi toutes les autres versions linguistiques de la page.
  • Les URL des variantes doivent être complètes et doivent mentionner le mode de transport (http/https), soit :
    https://example.com/foo, mais pas //example.com/foo ni /foo
  • Le domaine associé aux URL des variantes ne doit pas nécessairement être le même.
  • Si vous utilisez plusieurs URL de variantes ciblant des internautes parlant la même langue, mais situés dans des régions différentes, il est également recommandé de fournir une URL collectrice pour ceux dont la zone géographique n'est pas spécifiée. Par exemple, si vous disposez d'URL spécifiques destinées aux anglophones en Irlande (en-ie ), au Canada (en-ca ) et en Australie (en-au ), fournissez une page générique en anglais (en ) pour les internautes situés aux États-Unis, au Royaume-Uni et dans tous les autres pays anglophones. Si vous le souhaitez, vous pouvez utiliser l'une des pages ciblant déjà une variante linguistique.
  • Si deux pages ne redirigent pas l'une vers l'autre, les balises sont ignorées. Cette précaution a pour objectif d'empêcher le propriétaire d'un autre site de créer arbitrairement une balise indiquant qu'il s'agit d'une variante de l'une de vos pages alors que ce n'est pas le cas.
  • S'il devient difficile de gérer un ensemble complet de liens bidirectionnels pour chaque langue, vous pouvez omettre certaines langues sur certaines pages. Nous traiterons tout de même celles qui renvoient les unes vers les autres. Cependant, il est important de créer des liens bidirectionnels entre les pages proposées dans des nouvelles langues et la langue d'origine ou principale. Par exemple, si votre site a été initialement créé en français avec des URL en .fr, il est plus important de lier de manière bidirectionnelle les nouvelles pages mexicaines (.mx) et espagnoles (.es) à votre présence déjà établie en .fr plutôt que de créer un lien bidirectionnel entre les nouvelles variantes espagnoles (.mx et .es) de vos pages.
  • Envisagez d'ajouter une page de substitution pour les langues sans correspondance, surtout pour les outils de sélection de la langue ou du pays, ou pour les pages d'accueil redirigeant automatiquement l'internaute. Utilisez la valeur x-default :
    <link rel="alternate" href="https://example.com/" hreflang="x-default" />

Balises HTML

Ajoutez des éléments <link rel="alternate" hreflang="lang_code"... > à l'en-tête de la page pour indiquer à Google toutes ses variantes linguistiques et régionales. C'est utile si vous n'avez ni de sitemap, ni la possibilité de spécifier des en-têtes de réponse HTTP pour votre site.

Pour chaque variante de page, incluez un ensemble d'éléments <link> dans l'élément <head>, soit un lien pour chaque variante, y compris la page elle-même. L'ensemble de liens est identique pour chaque version de la page. Consultez les consignes supplémentaires.

Voici la syntaxe de chaque élément link :

<link rel="alternate" hreflang="lang_code" href="url_of_page" />
Syntaxe
lang_code Code de langue ou de région standard ciblé par la version de la page, ou attribut x-default pour indiquer toutes les langues qui ne sont pas présentées explicitement par une balise hreflang sur la page.
url_of_page URL complète de la version de la page pour la langue ou la région spécifiée.

Les balises <link> doivent se trouver à l'intérieur d'une section <head> bien formatée du code HTML. En cas de doute, collez le code de la page en question dans un programme de validation HTML pour vous assurer que les liens se trouvent bien dans l'élément <head>. De plus, ne combinez pas les balises link pour les représentations alternatives du document. Par exemple, ne combinez pas les annotations hreflang avec d'autres attributs tels que media dans une seule balise <link>.

Exemple

Le site Web de l'entreprise Example Widgets, Inc. est destiné aux internautes qui résident en Allemagne, aux États-Unis et en Grande-Bretagne. Le contenu des URL suivantes est globalement le même, mais présente des différences régionales :

URL avec variantes régionales
https://en.example.com/page.html Page d'accueil en anglais standard qui contient des informations sur les frais de port à l'international depuis les États-Unis.
https://en-gb.example.com/page.html Page d'accueil destinée au Royaume-Uni et indiquant les prix en livres sterling.
https://en-us.example.com/page.html Page d'accueil destinée aux États-Unis et indiquant les prix en dollars américains.
https://de.example.com/page.html Page d'accueil en allemand.
https://www.example.com/ Page d'accueil par défaut qui ne cible aucune langue ni aucune région spécifique, avec un outil de sélection qui permet à l'internaute de choisir sa langue et sa région.

Notez que les sous-domaines spécifiques à la langue dans ces URL (en, en-gb, en-us, de) ne sont pas utilisés par Google pour déterminer l'audience cible de la page. C'est vous qui devez explicitement associer l'audience cible.

Voici le code HTML à coller dans la section <head> de toutes les pages du tableau URL avec variantes régionales. Il renvoie les internautes situés aux États-Unis ou au Royaume-Uni, ainsi que ceux parlant l'allemand ou l'anglais standard, vers les pages localisées. Tous les autres utilisateurs sont redirigés vers une page d'accueil générique. La recherche Google propose aux internautes le résultat le plus approprié en fonction de leurs paramètres de navigateur.

<head>
 <title>Widgets, Inc</title>
  <link rel="alternate" hreflang="en-gb"
       href="https://en-gb.example.com/page.html" />
  <link rel="alternate" hreflang="en-us"
       href="https://en-us.example.com/page.html" />
  <link rel="alternate" hreflang="en"
       href="https://en.example.com/page.html" />
  <link rel="alternate" hreflang="de"
       href="https://de.example.com/page.html" />
 <link rel="alternate" hreflang="x-default"
       href="https://www.example.com/" />
</head>

En-têtes HTTP

Vous pouvez renvoyer un en-tête HTTP avec la réponse GET de votre page pour indiquer à Google toutes ses variantes linguistiques et régionales. Cette option est utile pour les fichiers non HTML (comme les fichiers PDF).

Voici le format de l'en-tête :

Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
Syntaxe
<url_x> URL complète de la variante de page correspondant à la chaîne de paramètres régionaux assignée à l'attribut hreflang associé. L'URL doit être délimitée par les signes < et >. Exemple : <https://www.google.com>
lang_code_x Code de langue ou de région standard ciblé par la version de la page, ou attribut x-default pour indiquer toutes les langues qui ne sont pas répertoriées explicitement par une balise hreflang sur la page.

Vous devez spécifier un ensemble de valeurs <url>, rel="alternate" et hreflang pour chaque version de la page, y compris la version demandée, en veillant à les séparer par une virgule comme indiqué dans l'exemple suivant. L'en-tête Link: affiché pour chaque version d'une page est identique. Consultez les consignes supplémentaires.

Exemple

Voici un exemple d'en-tête Link: renvoyé par un site incluant trois versions d'un fichier PDF : une pour les anglophones, une pour les germanophones de Suisse et une pour tous les autres germanophones :

Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <https://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch",
      <https://de.example.com/file.pdf>; rel="alternate"; hreflang="de"

Sitemap

Vous pouvez utiliser un sitemap XML pour indiquer à Google toutes les variantes linguistiques et régionales de chaque URL. Pour ce faire, ajoutez un élément <loc> en spécifiant une URL unique, avec des entrées enfants <xhtml:link> qui répertorient toutes les variantes linguistiques et régionales de la page, y compris la page elle-même. Par conséquent, si vous proposez trois versions d'une page, votre sitemap comportera des entrées pour les URL de chaque version, chacune avec trois entrées enfants identiques.

Règles relatives aux sitemaps :

  • Spécifiez l'espace de noms xhtml comme suit :
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • Créez un élément <url> distinct pour chaque URL, comme vous le feriez avec n'importe quel autre sitemap.
  • Chaque élément <url> doit inclure un élément enfant <loc> indiquant l'URL de la page.
  • Chaque élément <url> doit comporter un élément enfant <xhtml:link rel="alternate" hreflang="supported_language-code">, qui répertorie chaque version différente de la page, y compris la page elle-même. L'ordre de ces éléments enfants <xhtml:link> n'a pas d'importance. Toutefois, il est conseillé de les conserver dans le même ordre pour faciliter leur vérification. Les éléments enfants ne sont pas comptabilisés dans la limite d'URL des sitemaps.
  • Importez le sitemap dans un répertoire de votre site auquel il s'applique. N'oubliez pas qu'un sitemap ne peut contenir que les URL descendantes du répertoire à partir duquel il est hébergé.
  • Notre documentation sur les sitemaps s'applique également aux extensions de sitemaps. Veillez à suivre les Consignes générales relatives aux sitemaps.
  • Consultez les consignes supplémentaires.

Exemple

Prenons l'exemple d'une page en anglais destinée aux anglophones du monde entier, avec une variante destinée aux germanophones du monde entier et une autre variante pour les germanophones de Suisse. Voici toutes les URL présentes sur votre site :

  • www.example.com/english/page.html cible les anglophones.
  • www.example.de/deutsch/page.html cible les germanophones.
  • www.example.de/schweiz-deutsch/page.html cible les germanophones de Suisse.

Voici le sitemap de ces trois pages :

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://www.example.com/english/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/schweiz-deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
</urlset>

Codes de langue et de région acceptés

La valeur de l'attribut hreflang est composée d'une ou éventuellement deux valeurs, séparées par un tiret. Exemple : en-US. Le premier code de l'attribut hreflang est le code de langue (au format ISO 639-1), suivi d'un second code facultatif qui représente le code régional (au format ISO 3166-1 Alpha 2) d'une autre URL alternative.

Pour cibler les locuteurs de différents dialectes en Belgique, vous pouvez utiliser les codes de langue et de région suivants :

  • Valide (allemand pour les utilisateurs de Belgique) : de-be
  • Valide (néerlandais pour les utilisateurs en Belgique) : nl-be
  • Valide (français pour les utilisateurs en Belgique) : fr-be
  • Non valide, car le premier code reflète la langue (be est le code du biélorusse) : be

Pour simplifier l'ajout d'un libellé, vous pouvez spécifier un code de langue seul. Exemple :

  • de : contenu en allemand, quelle que soit la région
  • en-GB : contenu en anglais destiné aux utilisateurs en Grande-Bretagne
  • de-ES : contenu en allemand destiné aux internautes en Espagne

Dans le cas des variantes linguistiques, le script adéquat est déterminé en fonction du pays. Par exemple, avec le code zh-TW ciblant les internautes situés à Taïwan, le script correspond automatiquement au chinois traditionnel. Vous pouvez également spécifier explicitement le script au format ISO 15924, comme suit :

  • zh-Hant : chinois (traditionnel)
  • zh-Hans : chinois (simplifié)

Comme pour les autres codes de langue, vous pouvez également spécifier une région. Par exemple, zh-Hans-US permet de spécifier le chinois (simplifié) pour les utilisateurs situés aux États-Unis.

Utiliser la valeur x-default pour les langues sans correspondance

La valeur réservée x-default est utilisée quand aucune autre langue ou région ne correspond aux paramètres de navigateur de l'utilisateur. Cette valeur est recommandée pour spécifier la page de substitution pour les utilisateurs dont les paramètres linguistiques ne correspondent à aucune des versions localisées de votre site. Bien que vous puissiez utiliser la valeur x-default pour n'importe quelle page, elle a été conçue pour les pages de sélection de langue et c'est donc là qu'elle fonctionnera le mieux.

Il n'est pas nécessaire de spécifier un code de langue pour la valeur x-default. La page cible les internautes dont les paramètres linguistiques sont différents sur votre site. La langue de la page n'est donc pas pertinente.

Pour implémenter l'annotation hreflang="x-default", ajoutez une balise link supplémentaire aux annotations hreflang existantes, puis définissez l'attribut href sur l'URL à laquelle vous souhaitez que les utilisateurs accèdent. si votre site n'est pas disponible dans leur langue. Par exemple, une implémentation HTML peut se présenter comme suit :

<link rel="alternate" href="https://example.com/en-gb" hreflang="en-gb" />
<link rel="alternate" href="https://example.com/en-us" hreflang="en-us" />
<link rel="alternate" href="https://example.com/en-au" hreflang="en-au" />
<link rel="alternate" href="https://example.com/country-selector" hreflang="x-default" />

Dépannage

Erreurs fréquentes

Voici les erreurs fréquentes liées à l'utilisation de l'attribut hreflang :

  • Liens de renvoi manquants : si la page X renvoie vers la page Y, cette dernière doit également renvoyer vers la page X. Si ce n'est pas le cas pour toutes les pages qui utilisent des annotations hreflang, ces annotations peuvent être ignorées ou mal interprétées. Prenons l'exemple de ce lien sur https://de.example.com/index.html :
    <link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/index.html" />
    Vous devez également disposer sur https://en-gb.example.com/index.html d'un lien hreflang qui renvoie vers la version de du contenu :
    <link rel="alternate" hreflang="de" href="https://de.example.com/index.html" />
  • Codes de langue incorrects : assurez-vous que tous les codes de langue que vous utilisez indiquent la langue (au format ISO 639-1) ainsi que la région (facultatif, au format ISO 3166-1 Alpha 2) d'une autre version de l'URL. Indiquer simplement la région n'est pas suffisant.

Déboguer les erreurs hreflang

De nombreux outils tiers sont disponibles pour déboguer les annotations hreflang, tels que les outils populaires proposés ci-dessous. Sachez toutefois qu'ils ne sont ni gérés, ni vérifiés par Google.