Por qué importa
Primero, un mito: Google ha explicado que no usa el atributo lang para saber en qué idioma está una página; lo deduce del texto visible. Declararlo no te hará posicionar mejor en español, y tenerlo mal no te sacará de Google.
Aun así importa. Un lector de pantalla elige voz y pronunciación según ese atributo: con lang="en" en una web en español, leerá tus textos con reglas del inglés y serán casi incomprensibles. Los navegadores lo usan para ofrecer (o no) la traducción automática, y el CSS, para partir palabras con guiones correctamente. Además, declarar el idioma de la página es un requisito de las pautas de accesibilidad WCAG (criterio 3.1.1).
Cómo lo comprueba Posiciona
Leemos el atributo lang de la etiqueta <html>. Si no existe, la puntuación es 30. Si no tiene el formato esperado (dos letras de idioma en minúscula, opcionalmente seguidas de un guion y una región o variante con letras, como es, es-ES o pt-BR), 40. Si la página tiene además una meta content-language con otro idioma, 60. En otro caso, 100.
En la nota de SEO esta comprobación cuenta como “recomendable” (peso 2 de 5).
Cómo solucionarlo
Abre el código fuente de tu página (Ctrl+U en la mayoría de navegadores) y mira la etiqueta
<html>: debe llevarlangcon el idioma real del contenido.Usa el código de idioma de dos letras en minúscula (
es,en,ca,eu,gl,pt) y, si quieres precisar el país, añade un guion y la región:es-ES,es-MX,pt-BR.Si tu web tiene varios idiomas, cada versión debe declarar el suyo: la página en inglés,
lang="en"; la catalana,lang="ca". Comprueba que el selector de idioma cambia también este atributo.Si un fragmento concreto está en otro idioma, como una cita o el nombre de un producto en inglés, puedes marcarlo en su propia etiqueta:
<span lang="en">.Si tienes una etiqueta
<meta http-equiv="content-language">, elimínala o haz que coincida conlang: es un método antiguo que el estándar HTML actual desaconseja.
<!DOCTYPE html>
<html lang="es">En WordPress
- WordPress escribe el
langa partir del idioma configurado en Ajustes → Generales → Idioma del sitio, mediante la funciónlanguage_attributes()del tema. Si ahí está bien y el atributo sale mal, revisaheader.phpde tu tema por si está escrito a mano. - En webs multiidioma, plugins como WPML o Polylang cambian el atributo en cada versión; comprueba una página de cada idioma.
En Shopify
- Los temas actuales de Shopify generan
<html lang="{{ request.locale.iso_code }}">, que toma el idioma activo de la tienda. Si el tuyo lo tiene fijo, cámbialo entheme.liquiddesde Tienda online → Temas → Editar código. - El idioma principal de la tienda y los idiomas adicionales se gestionan en Configuración → Idiomas.
Preguntas frecuentes
¿Pongo es o es-ES?
Las dos formas son válidas. es basta si tu web está en español y te diriges a hispanohablantes en general; es-ES precisa que es español de España, útil si tienes versiones para distintos países (es-MX, es-AR). Escribe el idioma en minúscula, que es lo habitual, y no confundas códigos de idioma con códigos de país: ca es catalán, no Canadá.
¿El atributo lang sustituye a hreflang?
No. lang dice en qué idioma está la página que estás viendo; hreflang le dice a Google qué otras versiones de esa página existen en otros idiomas o países, para que muestre la adecuada a cada usuario. Si tu web tiene varios idiomas necesitas los dos: cada versión con su lang y todas enlazadas entre sí con hreflang.
¿Por qué el navegador me ofrece traducir mi propia web?
Porque el navegador tiene en cuenta el idioma declarado además del que detecta en el texto. Si tu lang indica un idioma distinto del real, por ejemplo en en una web en español (algo frecuente en plantillas compradas), puede ofrecer una traducción que no tiene sentido. Corregir el atributo suele resolverlo.
Guías relacionadas
- HreflangQue las etiquetas hreflang, si las hay, incluyan la propia página, un x-default y ningún código repetido.
- DOCTYPE y codificaciónQue la página empiece por
<!DOCTYPE html>y declare UTF-8 como codificación, al principio. - Etiquetas accesibles (ARIA)Que botones, enlaces y campos de formulario tengan un nombre que puedan leer los lectores de pantalla.