4dim / Notas

Googlebot habla inglés

Un sitio bilingüe que elegía idioma con navigator.language le mostró a Google, durante meses, el título en castellano y el cuerpo en inglés. Por qué pasa, por qué nadie lo ve, y por qué el idioma por defecto es una decisión de negocio y no del navegador.

Lo que vio Google durante meses

Si tu web tiene dos idiomas, esta nota te dice cómo comprobar cuál de los dos está viendo Google. Nosotros lo comprobamos tarde, y no era el que ve una persona.

El sitio es bilingüe: castellano por defecto, inglés con un conmutador. Durante meses, Google vio otra cosa. En las seis rutas principales, el título de la página, la descripción y la dirección canónica estaban en castellano, y el contenido de la página estaba en inglés.

La dirección canónica es la que le dice al buscador cuál es la versión buena de una página. Eran, pues, dos idiomas en el mismo documento, contándole al buscador dos cosas contradictorias a la vez. Ningún visitante humano lo vio así. Solo Googlebot.

Cuando un visitante llegaba sin una preferencia guardada, el sitio elegía idioma con navigator.language, que es lo que el navegador declara como idioma del sistema. Un colombiano con Windows en español recibe castellano. Alguien con el sistema en inglés recibe inglés. Parece lo correcto.

Googlebot, el programa con el que Google recorre la web, es en la práctica Chrome sin ventana. Ejecuta JavaScript, y su navigator.language es en-US. Así que el script de idioma, al correr, conmutaba la página a inglés.

Pero el título, la descripción y la canónica los escribe el servidor en el HTML, y ese script no los tocaba. Resultado: metadatos en castellano y cuerpo en inglés, justo para el único lector que decide en qué idioma indexarte.

Adivinar el idioma del visitante funciona con todos los visitantes menos con el que importa para aparecer en las búsquedas.

Dos verdades en una página

Lo grave no es que Google viera inglés. Es la incoherencia. Un buscador que recibe un título en un idioma y un cuerpo en otro no sabe a qué búsqueda responder con esa página, y tiende a no responder con ella a ninguna. Un sitio que le vende a pymes de Colombia estaba, para Google, medio en inglés y sin decidirse.

Y es la clase de fallo que no sale en ninguna herramienta de rendimiento ni en ninguna prueba automática. La página cargaba bien, rápido y sin errores. Solo se ve pidiéndole a Google que te enseñe lo que él ve.

La corrección: no adivinar

El sitio ya no adivina. Sin preferencia guardada es castellano, siempre, para todo el mundo, incluido Googlebot. Quien quiera inglés lo elige con el conmutador, y la elección se guarda en localStorage, la memoria que el navegador reserva para cada sitio.

Para poder enlazar o enseñarle a alguien la versión en inglés hay un parámetro explícito, ?lang=en, que se añade al final de la dirección. Es una decisión de quien comparte el enlace, no una suposición del sitio.

La regla general: el idioma por defecto de un sitio es una decisión de negocio, la de a quién le vendes. No es una propiedad del navegador del visitante.

Cómo comprobarlo en tu sitio

  • Abrir la inspección de URL en Google Search Console, que enseña la página tal como la vio Googlebot, con su HTML final. Si el cuerpo está en otro idioma que el título, ahí se ve.
  • Abrir el sitio en Chrome con el idioma del navegador cambiado a inglés y sin datos guardados. Si el sitio cambia, es que adivina.
  • Buscar en el código navigator.language y Accept-Language. Cada aparición es una suposición sobre el visitante.

Qué hacer entonces

  • Fijar un idioma por defecto, decidido por a quién le vendes.
  • Hacer explícito el cambio de idioma: un conmutador que guarda la preferencia, o una dirección distinta por idioma.
  • Escribir título, descripción, canónica y cuerpo en el mismo idioma, siempre. Si el cuerpo cambia por JavaScript, los metadatos tienen que cambiar con él. Mejor aún: que nada cambie por JavaScript.
  • Mirar lo que ve Google, no lo que ves tú. Son navegadores distintos.

Esta nota sale de nuestro trabajo en Desarrollo web.

← todas las notas