Notificar a Google versiones localizadas de tu página

Si tienes varias versiones de una página en diferentes idiomas o dirigidas a regiones concretas, háznoslo saber. De este modo, la Búsqueda de Google puede mostrar a los usuarios la versión más adecuada de tu página según su idioma o región.

Es posible que encontremos versiones de tus páginas en otros idiomas aunque no nos las comuniques; no obstante, te recomendamos que nos facilites las versiones en otros idiomas o dirigidas a regiones concretas.

A continuación, describimos algunas situaciones en las que recomendamos indicar páginas alternativas:

  • El contenido principal está en un solo idioma y solo se traduce la plantilla, como el área de navegación y el pie de página. Esta situación suele darse en páginas con contenido generado por usuarios, como los foros.
  • El contenido está en un solo idioma, pero incluye pequeñas variaciones regionales con contenido similar. Por ejemplo, páginas con contenido en español dirigido a Argentina, España y México.
  • El contenido está completamente traducido a varios idiomas. Por ejemplo, páginas con una versión en inglés y otra en español.

Las versiones localizadas de una página solo se consideran duplicadas si su contenido principal no está traducido.

Métodos para indicar páginas alternativas

Puedes indicarnos que una página tiene versiones en otros idiomas o dirigidas a regiones determinadas de tres maneras distintas:

Los tres métodos son equivalentes desde la perspectiva de Google y puedes elegir el que mejor se adapte a tu sitio. Aunque se pueden usar los tres métodos al mismo tiempo, la Búsqueda no obtiene ningún beneficio. De hecho, puede que sea más difícil gestionar tres implementaciones en lugar de elegir una.

Utiliza hreflang para informar a Google sobre las variaciones de tu contenido y así saber que esas páginas son variaciones localizadas del mismo contenido. Google no utiliza hreflang ni el atributo HTML lang para detectar el idioma de las páginas. Lo que hacemos es utilizar algoritmos para determinar el idioma.

Directrices sobre todos los métodos

  • En cada versión de idioma de una página, deben incluirse las versiones en todos los demás idiomas, además de la suya propia.
  • Las URLs alternativas deben ser URLs cualificadas, por lo que también deben incluir el método de transporte (http/https). Es decir:
    https://example.com/foo, no //example.com/foo ni /foo
  • No es necesario que las URLs alternativas estén en el mismo dominio.
  • Si tienes varias URLs alternativas dirigidas a usuarios del mismo idioma, pero con distintas configuraciones regionales, es buena idea proporcionar una URL genérica a la que dirigir a los usuarios del idioma que no estén en ninguna ubicación geográfica indicada. Por ejemplo, si tienes URLs específicas a las que llevar a los usuarios de inglés de Australia (en-au), Canadá (en-ca) e Irlanda (en-ie), ofrece también una página en inglés genérico (en) para mostrar a los usuarios de EE. UU., el Reino Unido y el resto de los lugares de habla inglesa. Si quieres, puede ser una de las páginas específicas.
  • Si dos páginas no se apuntan entre sí, las etiquetas se ignorarán. De este modo, se evita que un webmaster de otro sitio cree una etiqueta de manera arbitraria para marcar una de sus páginas como versión alternativa de una de las tuyas.
  • Si resulta difícil incluir los enlaces de todos los idiomas en todas las páginas, puedes omitir algunos en algunas páginas; aunque lo hagas, procesaremos los que se apunten entre sí. Sin embargo, es importante incluir enlaces a los idiomas originales o dominantes en las páginas de idiomas que se hayan añadido recientemente, y viceversa. Por ejemplo, supongamos que el idioma original de tu sitio es el francés (termina en .fr) y hace poco has creado una versión en español de México (.mx) y otra en español de España (.es). En este caso, es importante que enlaces la versión en francés (.fr), que tiene más presencia, con las dos versiones en español (.mx y .es), y viceversa. No es tan necesario que enlaces entre sí las dos versiones en español.
  • Quizá te interese incluir una página de respaldo para que se muestre a los usuarios de idiomas que no ofreces, sobre todo en los selectores de idioma y país o en las páginas principales a las que se redirige automáticamente. Usa el valor x-default:
    <link rel="alternate" href="https://example.com/" hreflang="x-default" />

Etiquetas HTML

Añade elementos <link rel="alternate" hreflang="lang_code"... > al encabezado de una página para informarnos de todas sus variantes de idioma y región. Este método resulta útil si no tienes ningún sitemap ni puedes especificar encabezados de respuesta HTTP en tu sitio.

Por cada variante de la página, incluye un conjunto de elementos <link> en el elemento <head> y un enlace, incluido el suyo propio. Este conjunto de enlaces debe ser el mismo en todas las variantes de una página. Consulta las directrices adicionales.

A continuación, se explica la sintaxis de cada elemento link:

<link rel="alternate" hreflang="lang_code" href="url_of_page" />
Sintaxis
lang_code Código de idioma o región admitidos al que se dirige esta versión de la página. Con x-default, indicas que esta versión debe mostrarse a los usuarios de idiomas que no se mencionan en las etiquetas hreflang de la página.
url_of_page URL cualificada de la versión de esta página del idioma o la región indicados.

Coloca las etiquetas <link> cerca del principio del elemento <head>. Como mínimo, las etiquetas <link> deben incluirse en una sección <head> que tenga un formato correcto, aunque también podrían colocarse antes de cualquier elemento que pueda causar que la sección <head> se cierre prematuramente, como los elementos <p> o un Píxel de seguimiento. Si tienes alguna duda, pega el código de tu página renderizada en un validador de HTML para comprobar que los enlaces estén dentro del elemento <head>.

Ejemplo

Supongamos que Widgets, Inc tiene un sitio web que se muestra a usuarios de EE. UU., el Reino Unido y Alemania. Las URLs siguientes tienen prácticamente el mismo contenido, pero incluyen variaciones regionales:

URLs con variaciones regionales
https://en.example.com/page.html Página principal genérica en inglés que incluye información sobre las tarifas de envíos internacionales desde Estados Unidos.
https://en-gb.example.com/page.html Página principal del Reino Unido que muestra los precios en libras esterlinas.
https://en-us.example.com/page.html Página principal de Estados Unidos que muestra los precios en dólares estadounidenses.
https://de.example.com/page.html Página principal en alemán.
https://www.example.com/ Página predeterminada que no está dirigida a ningún idioma ni configuración regional. Tiene selectores para que los usuarios puedan elegir su idioma y región.

Google no determina la audiencia objetivo de las páginas a partir de los subdominios de idioma que haya en esas URLs (como en, en-gb, en-us y de), sino que debes asignarla explícitamente.

A continuación, se incluye el fragmento de código HTML que debería añadirse a la sección <head> de todas las páginas que figuran en la tabla de URLs con variaciones regionales. Con este fragmento, se dirige a los usuarios que hablan inglés (estén en EE. UU., en el Reino Unido o en cualquier otro país) y a los que hablan alemán a las páginas localizadas correspondientes. El resto de los usuarios verá una página principal genérica. La Búsqueda de Google devuelve el resultado adecuado en función de la configuración del navegador de los usuarios.

<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>

Encabezados HTTP

Puedes devolver encabezados HTTP con las respuestas GET de tus páginas para informarnos de todas sus variantes de idioma y región. Este método es útil con archivos que no son HTML, como los PDFs.

El encabezado debe tener este formato:

Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
Sintaxis
<url_x> URL cualificada de la página alternativa correspondiente al código de configuración regional asignado al atributo hreflang asociado. La URL debe estar entre estos símbolos: < >. Ejemplo: <https://www.google.com>
lang_code_x Código de idioma o región admitidos al que se dirige esta versión de la página. Con x-default, indicas que esta versión debe mostrarse a los usuarios de idiomas que no se mencionan en las etiquetas hreflang de la página.

Debes especificar tantos conjuntos de valores <url>, rel="alternate" y hreflang como versiones tenga la página, incluida la versión solicitada. Esos conjuntos tienen que separarse con comas, tal como se muestra en el ejemplo que aparece a continuación. Con cada versión de la página se devuelve el mismo encabezado Link:. Consulta las directrices adicionales.

Ejemplo

A continuación, se muestra un ejemplo de encabezado Link: devuelto por un sitio que tiene tres versiones de un archivo PDF: una para los usuarios que hablan inglés, otra dirigida a los hablantes de alemán de Suiza y una tercera que se muestra a todos los demás visitantes que hablen alemán:

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

Puedes informarnos de las variantes de idioma y región de todas tus URLs mediante un sitemap XML. Para hacerlo, añade un elemento <loc> que incluya una única URL y tenga entradas secundarias <xhtml:link> para especificar todas las variantes de idioma y región de la página, incluida la del propio elemento. Es decir, si tienes tres versiones de una página, tu sitemap tiene que incluir las entradas de las URLs de cada versión, y cada entrada tendrá tres entradas secundarias idénticas.

Reglas de sitemaps:

  • Especifica el espacio de nombres xhtml de este modo:
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • Crea un elemento <url> distinto para cada URL, tal como lo harías con cualquier otro sitemap.
  • Cada elemento <url> debe incluir un elemento secundario <loc> que indique la URL de la página.
  • Cada elemento <url> debe tener un elemento secundario <xhtml:link rel="alternate" hreflang="supported_language-code"> con todas las variantes de la página, incluida la del propio elemento. El orden de estos elementos secundarios <xhtml:link> no es importante, pero te recomendamos que uses siempre el mismo para que te resulte más fácil comprobar si hay errores. Los elementos secundarios no se tienen en cuenta para calcular el límite de URLs de los sitemaps.
  • Sube el sitemap a un directorio de tu sitio al que corresponda. Ten en cuenta que los sitemaps solo pueden contener URLs secundarias del directorio en el que se alojen.
  • Nuestra documentación sobre sitemaps también se aplica a las extensiones de sitemaps. Asegúrate de que sigues las directrices generales sobre sitemaps.
  • Consulta las directrices adicionales.

Ejemplo

Supongamos que tienes una página en inglés dirigida a personas que hablan inglés de todo el mundo y que tienes versiones equivalentes de esta página para usuarios de habla alemana de cualquier parte del mundo, así como situados específicamente en Suiza. A continuación, se muestran todas las URLs de esta página presentes en el sitio:

  • www.example.com/english/page.html dirigida a personas que hablan inglés.
  • www.example.de/deutsch/page.html dirigida a personas que hablan alemán.
  • www.example.de/schweiz-deutsch/page.html dirigida a personas de habla alemana situadas específicamente en Suiza.

El sitemap de estas tres páginas sería este:

<?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>

Códigos de idioma y región admitidos

El valor del atributo hreflang está compuesto por uno, o de forma opcional, dos valores, separados por un guion. Por ejemplo, en-US. El primer código del atributo hreflang es el código de idioma (en formato ISO 639-1) seguido de un segundo código opcional que representa el código regional (en formato ISO 3166-1 Alpha 2) de una URL alternativa.

Para dirigirte a hablantes de distintos idiomas de Bélgica, puedes usar los siguientes códigos de idioma y región:

  • Opción válida (neerlandés para usuarios de Bélgica): nl-be
  • Opción válida (neerlandés para usuarios de Bélgica): nl-be
  • Opción válida (francés para usuarios de Bélgica): fr-be
  • Opción incorrecta, ya que el primer código corresponde al idioma (be es el código del idioma bielorruso): be

Para simplificar el etiquetado, puedes indicar simplemente un código de idioma. Por ejemplo:

  • de: contenido en alemán, independientemente de la región
  • en-GB: contenido en inglés dirigido a usuarios británicos
  • de-ES: contenido en alemán para usuarios que estén en España

En los idiomas con variaciones en su alfabeto, el alfabeto adecuado se detecta a partir del país. Por ejemplo, si usas zh-TW para dirigir contenido a usuarios taiwaneses, el alfabeto correcto se infiere automáticamente (en este caso, chino tradicional). También puedes especificar el alfabeto de forma explícita con el código ISO 15924, tal como se indica a continuación:

  • zh-Hant: chino tradicional
  • zh-Hans: chino simplificado

Al igual que sucede con otros códigos de idioma, también puedes especificar una región opcional. Por ejemplo, usa zh-Hans-US para especificar chino simplificado a usuarios de Estados Unidos.

Incluir el valor x-default para mostrar una versión concreta a los usuarios de idiomas no indicados

x-default es un valor reservado que se utiliza cuando la configuración del navegador de los usuarios no coincide con ningún idioma ni región que ofreces. Se recomienda usar este valor para especificar la página de respaldo que se mostrará a los usuarios cuya configuración de idioma no coincida con ninguna de las versiones localizadas del sitio. Aunque puedes usar el valor x-default en cualquier página, está diseñado para mostrarse en páginas de selector de idioma y es ahí donde funcionará mejor.

No es necesario especificar un código de idioma en el valor x-default. La página está dirigida a usuarios cuya configuración de idioma no coincide con la de tu sitio, por lo que el idioma de la página es irrelevante.

Para implementar la anotación hreflang="x-default", añade una etiqueta link adicional a las anotaciones hreflang y configura la URL de tu sitio a la que quieres dirigir a los usuarios mediante el atributo href si tu sitio no está disponible en su idioma. Por ejemplo, una implementación HTML podría tener el siguiente aspecto:

<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" />

Solucionar problemas

Errores habituales

A continuación, se indican los errores más habituales que se producen al usar hreflang:

  • Faltan enlaces recíprocos: si en una página X se incluye un enlace a una página Y, en esta página Y tiene que haber un enlace a la página X. Si no se cumple esta condición en todas las páginas que usan anotaciones hreflang, es posible que estas anotaciones se ignoren o no se interpreten correctamente. Por ejemplo, si en https://de.example.com/index.html se incluye este enlace:
    <link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/index.html" />
    También se debe incluir un enlace hreflang en https://en-gb.example.com/index.html que devuelva a la versión de del contenido:
    <link rel="alternate" hreflang="de" href="https://de.example.com/index.html" />
  • Códigos de idioma incorrectos: asegúrate de que los códigos de idioma que usas identifiquen el idioma en formato ISO 639-1 y, opcionalmente, la región en formato ISO 3166-1 Alpha 2 de las URLs alternativas. No se puede especificar únicamente la región.

Depurar errores de hreflang

Hay muchas herramientas de terceros disponibles que puedes utilizar para depurar anotaciones de hreflang. A continuación te indicamos algunas de las más populares. Google no se encarga del mantenimiento ni de la revisión de estas herramientas.