Acerca de este problema HTML
El atributo lang en el elemento <html> declara el idioma principal del contenido del documento. Cuando este atributo se deja vacío (lang=""), efectivamente le dice a los navegadores y tecnologías de asistencia que el idioma es desconocido o intencionalmente no especificado — lo cual casi nunca es lo que quieres.
Esto importa por varias razones importantes:
-
Accesibilidad: Los lectores de pantalla dependen del atributo
langpara seleccionar el motor de pronunciación correcto. Un valor vacío puede causar que un lector de pantalla recurra a un idioma por defecto, potencialmente leyendo texto en inglés con reglas de pronunciación incorrectas. -
Motores de búsqueda: Los motores de búsqueda usan el atributo
langpara entender en qué idioma está tu contenido, lo que ayuda a servir tus páginas a la audiencia correcta. - Funciones del navegador: Los navegadores usan la declaración de idioma para guionado, corrección ortográfica, selección de fuente y otras decisiones de renderizado sensibles al idioma.
-
Cumplimiento de estándares: El estándar vivo HTML de WHATWG especifica que si el atributo
langestá presente, su valor debe ser una etiqueta de idioma BCP 47 válida. Una cadena vacía no es una etiqueta de idioma válida.
La solución es sencilla: establece el atributo lang a una etiqueta de idioma BCP 47 válida que coincida con tu contenido. Para inglés, valores comunes incluyen en (inglés general), en-US (inglés americano), o en-GB (inglés británico). Si tu contenido está en otro idioma, usa la etiqueta apropiada (ej., fr para francés, de para alemán, ja para japonés).
Ejemplos
❌ Atributo lang vacío (desencadena la advertencia)
<!DOCTYPE html>
<html lang="">
<head>
<title>My Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
</body>
</html>
❌ Falta completamente el atributo lang
Aunque la falta del atributo lang desencadena una advertencia diferente, causa el mismo problema subyacente — no se declara ningún idioma:
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
</body>
</html>
✅ Correcto: especificando el idioma
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
</body>
</html>
✅ Correcto: usando una variante regional
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>My Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
</body>
</html>
Usando lang para contenido multiidioma
Si tu documento está principalmente en inglés pero contiene secciones en otros idiomas, establece lang="en" en el elemento <html> y sobreescríbelo en elementos específicos:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Multilingual Page</title>
</head>
<body>
<h1>Welcome</h1>
<p>This page contains a quote in French:</p>
<blockquote lang="fr">
<p>La vie est belle.</p>
</blockquote>
</body>
</html>
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.
Más información: