Acerca de este problema HTML
El atributo lang en el elemento <html> indica a los navegadores, motores de búsqueda y tecnologías de asistencia en qué idioma está escrito el contenido de la página. El validador utiliza un análisis heurístico del texto real en la página para detectar el idioma probable, y cuando hay una discrepancia, marca la diferencia.
Por qué esto importa
Un atributo lang incorrecto causa problemas reales para usuarios y sistemas que dependen de él:
-
Los lectores de pantalla usan el atributo
langpara seleccionar el motor de pronunciación correcto. Un documento en francés marcado como inglés se leerá en voz alta con reglas de pronunciación inglesas, haciéndolo incomprensible. - Los motores de búsqueda utilizan la declaración de idioma para indexar y servir resultados a usuarios que buscan en un idioma específico.
- Las funciones del navegador como las sugerencias de traducción automática y la corrección ortográfica dependen del idioma declarado.
- Las reglas de guionado y tipográficas en CSS también dependen de que se declare el idioma correcto.
Causas comunes
-
Copiar y pegar una plantilla — Empezar desde una plantilla en inglés pero escribir contenido en otro idioma sin actualizar
lang. -
Sitios multilingües — Usar la misma plantilla base para todas las versiones de idioma sin establecer dinámicamente el valor de
lang. -
Subtag de idioma incorrecto — Usar la etiqueta de idioma BCP 47 incorrecta (ej.,
lang="en"en lugar delang="de"para contenido alemán).
Cuándo puedes ignorar esta advertencia con seguridad
Esta es una advertencia, no un error. La detección de idioma del validador es heurística y no siempre es precisa. Puedes ignorarla con seguridad si:
- Tu página contiene muy poco texto, haciendo que la detección no sea confiable.
-
La página tiene cantidades significativas de contenido en múltiples idiomas, pero el atributo
langrefleja correctamente el idioma principal. - El idioma detectado simplemente está equivocado (ej., fragmentos de texto cortos pueden confundir al detector).
Si estás seguro de que el atributo lang es correcto, puedes descartar la advertencia.
Cómo solucionarlo
Identifica el idioma principal del contenido de tu documento y establece el atributo lang con la etiqueta de idioma BCP 47 apropiada. Las etiquetas comunes incluyen en (inglés), fr (francés), de (alemán), es (español), pt (portugués), ja (japonés), y zh (chino).
Ejemplos
Incorrecto: contenido en francés, pero lang establecido en inglés
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Mon site</title>
</head>
<body>
<h1>Bienvenue sur notre site</h1>
<p>Nous sommes ravis de vous accueillir sur notre plateforme.</p>
</body>
</html>
Esto activa la advertencia porque el validador detecta contenido francés pero ve lang="en".
Corregido: el atributo lang coincide con el idioma del contenido
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Mon site</title>
</head>
<body>
<h1>Bienvenue sur notre site</h1>
<p>Nous sommes ravis de vous accueillir sur notre plateforme.</p>
</body>
</html>
Manejo de contenido multilingüe
Si tu página está principalmente en un idioma pero contiene secciones en otro, establece el atributo lang en el elemento <html> al idioma principal y usa lang en elementos específicos para el otro idioma:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Our Global Site</title>
</head>
<body>
<h1>Welcome to our site</h1>
<p>We are glad you are here.</p>
<blockquote lang="fr">
<p>La vie est belle.</p>
</blockquote>
</body>
</html>
Esto indica a las tecnologías de asistencia que la página está en inglés, pero la cita debe leerse usando reglas de pronunciación francesas. El validador no debería marcar esto como una discrepancia porque la mayoría del contenido está en inglés.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.