Cómo informarle a Google que hay versiones localizadas de tu página

Si tienes múltiples versiones de una página para distintos idiomas o regiones, indícale a Google las diferentes variantes. De esa manera, la Búsqueda de Google podrá dirigir a los usuarios a la versión más adecuada de tu página según el idioma o la región.

Ten en cuenta que, incluso si no lo haces, es posible que Google igual encuentre versiones de tu página en otros idiomas. Sin embargo, lo mejor es que indiques de manera explícita las páginas específicas según el idioma o la región.

A continuación, se detallan algunas situaciones de ejemplo en las que se recomienda indicar las páginas alternativas:

  • Si el contenido principal está en un solo idioma y solo se traduce la plantilla, como la barra de navegación y el pie de página. Las páginas que incluyen contenido generado por usuarios, como los foros, suelen hacer eso.
  • Si el contenido incluye pequeñas variantes regionales con contenido similar en un solo idioma. Por ejemplo, puedes tener contenido en inglés orientado a EE.UU., Irlanda y el Reino Unido.
  • Si el contenido de tu sitio está traducido por completo a varios idiomas. Por ejemplo, si cuentas con versiones en inglés y alemán de cada página.

Las versiones localizadas de una página solo se consideran versiones duplicadas cuando el contenido principal de la página está sin traducir.

Métodos para indicar páginas alternativas

Existen tres maneras de indicarle a Google que hay múltiples versiones de una página según el idioma o la región:

Lineamientos para todos los métodos

  • Cada versión de idioma también debe incluirse en el detalle, además de todas las otras versiones.
  • Las URL alternativas deben estar completamente calificadas, incluido el método de transporte ("http" o "https"). Por lo tanto, debería ser:
    https://example.com/foo, no //example.com/foo ni /foo
  • No es necesario que las URL alternativas estén en el mismo dominio.
  • Si tienes varias URL alternativas orientadas a usuarios con el mismo idioma, pero en distintas regiones, te recomendamos que proporciones una URL genérica para los usuarios de ese idioma sin especificaciones geográficas. Por ejemplo, si tienes URL específicas para hablantes de inglés en Irlanda (en-ie), Canadá (en-ca) y Australia (en-au), debes proporcionar una página de inglés genérico (en) para las personas de EE.UU., Reino Unido y el resto de las ubicaciones en las que se habla inglés. Si lo deseas, puede ser una de las páginas específicas.
  • Si dos páginas no se dirigen la una a la otra, se ignorarán las etiquetas. De esa forma, una persona de otro sitio no podrá crear de manera arbitraria una etiqueta para nombrarse a sí mismo como una versión alternativa de una de tus páginas.
  • Si se te complica mantener un conjunto completo de vínculos bidireccionales para cada idioma, puedes omitir algunos idiomas en ciertas páginas. Google procesará de todas formas las que se dirijan entre sí. Sin embargo, es importante vincular de manera bidireccional las páginas de idiomas ampliadas hace poco al idioma original o dominante. Por ejemplo, si tu sitio se creó originalmente en francés con las URL en .fr, es más importante vincular de manera bidireccional páginas más nuevas en español mexicano (.mx) y de España (.es) a la presencia sólida de .fr, en lugar de vincular de manera bidireccional las nuevas páginas de variantes en español (.mx y .es) entre sí.
  • Procura agregar una página de resguardo para idiomas sin coincidencias, especialmente en selectores de idioma o país, o bien en páginas principales con redireccionamiento automático. Usa el valor x-default:
    <link rel="alternate" href="http://example.com/" hreflang="x-default" />

Etiquetas HTML

Agrega elementos <link rel="alternate" hreflang="lang_code"... > al encabezado de tu página para indicarle a Google todas las variantes de idioma y región de una página. Eso es útil si no tienes un mapa del sitio ni la capacidad para especificar los encabezados de respuesta HTTP de tu sitio.

Para cada variación de la página, incluye un conjunto de elementos <link> en el elemento <head>, un vínculo para cada variante de la página, incluida la propia página. El conjunto de vínculos es idéntico para todas las versiones de la página. Consulta los lineamientos adicionales.

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

<link rel="alternate" hreflang="lang_code" href="url_of_page" />
Sintaxis
lang_code Un código regional o de idioma compatible al que se orienta esta versión de la página o x-default para que coincida con cualquier idioma que no esté detallado de manera explícita por una etiqueta hreflang en la página.
url_of_page Es la URL completamente calificada de la versión de esta página correspondiente a la región o el idioma especificado.

Ejemplo

Example Widgets, Inc tiene un sitio web para usuarios de EE.UU., el Reino Unido y Alemania. Las siguientes URL incluyen básicamente el mismo contenido, pero con variaciones regionales:

URL con variaciones regionales
http://en.example.com/page.html Es la página principal en inglés genérico, que incluye información sobre tarifas de envíos internacionales desde EE.UU.
http://en-gb.example.com/page.html Es la página principal del Reino Unido que muestra precios en libras esterlinas.
http://en-us.example.com/page.html Es la página principal de EE.UU. que muestra los precios en dólares estadounidenses.
http://de.example.com/page.html Página principal en alemán
http://www.example.com/ Es la página predeterminada que no está orientada a ningún idioma ni región. Incluye selectores para que los usuarios puedan elegir estas opciones.

Ten en cuenta que los subdominios específicos de un idioma en estas URL (en, en-gb, en-us, de) no se utilizan en Google para determinar los usuarios objetivo de la página. Por este motivo, debes asignarlos explícitamente.

A continuación, se detalla el código HTML que debería aparecer en la sección <head> de todas las páginas enumeradas en la tabla de URL con variaciones regionales. De esa forma, se dirige a los hablantes de inglés genérico, inglés de EE.UU., inglés del Reino Unido y alemán a las páginas localizadas, y el resto verá una página principal genérica. La Búsqueda de Google muestra el resultado adecuado para el usuario según la configuración de su navegador.

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

Encabezados HTTP

Puedes mostrar un encabezado HTTP con la respuesta GET de tu página para informarle a Google todas las variantes de idioma y región de una página. Eso es útil para archivos que no son HTML (por ejemplo, PDF).

A continuación, se detalla el formato del encabezado:

Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
Sintaxis
<url_x> Es la URL completamente calificada de la página alternativa que corresponde a la string de configuración regional asignada al atributo hreflang asociado. La URL debe incluir las marcas < y > circundantes. Ejemplo: <https://www.google.com>
lang_code_x Es un código regional o de idioma compatible al que se orienta esta versión de la página o x-default para que coincida con cualquier idioma que no esté detallado de manera explícita por una etiqueta hreflang en la página.

Debes especificar un conjunto de valores <url>, rel="alternate" y hreflang para cada versión de la página, incluida la versión solicitada. Las versiones se separan con comas, como en el ejemplo que se muestra a continuación. El encabezado Link: que se muestra para cada versión de una página es idéntico. Consulta los lineamientos adicionales.

Ejemplo

A continuación, se incluye un encabezado Link: mostrado por un sitio que tiene tres versiones de un archivo PDF: una para hablantes de inglés, otra para hablantes de alemán de Suiza y una última para el resto de los hablantes de alemán.

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

Mapa del sitio

Puedes usar un mapa del sitio para indicarle a Google todas las variantes de idioma y región de cada URL. Para hacerlo, agrega un elemento <loc> que especifique una única URL con entradas secundarias de <xhtml:link> que detallen cada variante de idioma o región de la página, incluida la página misma. Por lo tanto, si tienes 3 versiones de una página, tu mapa del sitio tendrá 3 entradas, cada una con 3 entradas secundarias idénticas.

Reglas de los mapas del sitio:

  • Especifica el espacio de nombres "xhtml" de la siguiente forma:
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • Crea un elemento <url> separado para cada URL.
  • 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"> que enumere todas las versiones alternativas de la página, incluida la página misma. No importa el orden de los elementos secundarios <xhtml:link>. Sin embargo, te recomendamos que los mantengas en el mismo orden para que te sea más fácil detectar errores.
  • Consulta los lineamientos adicionales.

Ejemplo

A continuación, se detalla una página en idioma inglés orientada a hablantes de inglés de todo el mundo, que cuenta con versiones equivalentes de la página orientadas a hablantes de alemán de todo el mundo y a hablantes de alemán que viven en Suiza. Estas son todas las URL presentes en tu sitio:

  • www.example.com/english/page.html se orienta a hablantes de inglés.
  • www.example.com/deutsch/page.html se orienta a hablantes de alemán.
  • www.example.com/schweiz-deutsch/page.html se orienta a hablantes de alemán en Suiza.

Este es el mapa del sitio de esas tres páginas:

<?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>http://www.example.com/english/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/schweiz-deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
</urlset>

Códigos de idioma o región compatibles

El valor del atributo hreflang identifica el idioma (en formato ISO 639-1) y, de manera opcional, una región (en formato ISO 3166-1 Alpha 2) de una URL alternativa. Si solo hay un código especificado, Google supone que es un código de idioma. No es necesario que el idioma esté relacionado con la región. Por ejemplo:

  • de: Contenido en idioma alemán, independientemente de la región
  • en-GB: Contenido en idioma inglés para usuarios del Reino Unido
  • de-ES: Contenido en idioma alemán para usuarios de España

Para las variantes de la secuencia de comando de idioma, la secuencia adecuada deriva del país. Por ejemplo, si usas zh-TW para usuarios de Taiwán, automáticamente se deriva la secuencia de comandos del idioma (por ejemplo, chino tradicional). También puedes especificar la secuencia de comandos misma de manera explícita usando ISO 15924, tal como se describe a continuación:

  • zh-Hant: Chino (tradicional)
  • zh-Hans: Chino (simplificado)

Otra opción es que especifiques una combinación de la secuencia de comandos y la región. Por ejemplo, usa zh-Hans-TW a fin de especificar chino (simplificado) para usuarios taiwaneses.

Usa la etiqueta x-default para idiomas sin coincidencia

El valor reservado hreflang="x-default" se usa cuando no hay ningún otro idioma o región que coincida con la configuración de navegador del usuario. El valor es opcional, pero se recomienda como una forma de controlar la página cuando no coincide ningún idioma. Un uso útil es para orientar la página principal de tu sitio, donde hay un mapa en el que se puede hacer clic para elegir el país desde el que se accede.

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

Solución de problemas

Errores comunes

Los siguientes son los errores más comunes en el uso de hreflang:

  • Falta el vínculo que se mostrará: Si la página X se vincula con Y, esta última debe incluir un vínculo para volver a la página X. Si este no es el caso de todas las páginas que se incluyan anotaciones hreflang, es posible que se ignoren esas anotaciones o que no se interpreten correctamente. Por ejemplo, si usas este vínculo en https://de.example.com/index.html:
    <link rel="alternate" hreflang="en-gb" href="http://en-gb.example.com/index.html" />
    También debes tener un vínculo hreflang en http://en-gb.example.com/index.html que apunte a la versión de del contenido:
    <link rel="alternate" hreflang="de" href="http://de.example.com/index.html" />
  • Códigos de idioma incorrectos: Asegúrate de que todos los códigos que uses identifiquen el idioma correcto (en formato ISO 639-1) y, de manera opcional, la región (en formato ISO 3166-1 Alpha 2) de una URL alternativa. No es válido especificar solo la región.

Cómo depurar errores de hreflang

Puedes usar el informe Orientación internacional para depurar los problemas más comunes. Asegúrate de que Google haya tenido tiempo de rastrear tus páginas y, luego, visita la pestaña Idioma en el informe para consultar si se detectaron errores.

También hay muchas herramientas de terceros disponibles. A continuación, se detallan algunas de las más populares. Google no mantiene ni verifica esos recursos.