Acerca de este problema HTML
En las prácticas HTML más antiguas, los desarrolladores a veces usaban <meta http-equiv="Content-Language" content="en"> dentro del <head> para declarar el idioma principal del documento. El estándar HTML living ahora marca esto como obsoleto porque era una forma poco confiable e indirecta de comunicar información sobre el idioma. Intentaba reflejar una cabecera HTTP en lugar de ser una parte verdadera de la estructura del documento, y su comportamiento se implementaba de manera inconsistente entre navegadores.
El atributo lang en el elemento <html> es el enfoque moderno correcto. Asocia directamente el idioma con el árbol DOM del documento, lo que tiene varios beneficios importantes:
-
Accesibilidad: Los lectores de pantalla dependen del atributo
langpara seleccionar las reglas de pronunciación correctas y el perfil de voz. Sin él, la tecnología de asistencia puede pronunciar mal el contenido o recurrir a un idioma predeterminado que no coincida con el texto. -
Comportamiento del navegador: Los navegadores usan el atributo
langpara tomar decisiones sobre la división de palabras, selección de fuentes, estilo de comillas, corrección ortográfica y otros tipos de renderizado sensibles al idioma. - Motores de búsqueda: Declarar el idioma ayuda a los motores de búsqueda a indexar y servir contenido a la audiencia apropiada.
-
Orientación CSS: El selector de pseudoclase
:lang()funciona basado en el atributolang, permitiendo estilos específicos para cada idioma.
El atributo lang también admite declaraciones de idioma granulares a nivel de elemento. Si tu página está principalmente en inglés pero contiene una cita en francés, puedes establecer lang="fr" en ese elemento específico — algo que el enfoque <meta> nunca podría hacer.
Ejemplos
Incorrecto: usando la etiqueta meta obsoleta
Esto activa la advertencia de validación de W3C porque <meta http-equiv="Content-Language"> está obsoleto para especificar el idioma del documento.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Language" content="en">
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Correcto: usando el atributo lang en <html>
Elimina la etiqueta <meta http-equiv="Content-Language"> y añade el atributo lang al elemento <html> en su lugar.
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Correcto: contenido en varios idiomas
Usa el atributo lang en el elemento raíz para el idioma principal, luego sobreescríbelo en elementos específicos según sea necesario.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Multilingual Page</title>
</head>
<body>
<p>The French word for hello is <span lang="fr">bonjour</span>.</p>
<blockquote lang="de">
<p>Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt.</p>
</blockquote>
</body>
</html>
Códigos de idioma comunes
Usa una etiqueta de idioma BCP 47 válida como valor del atributo lang. Aquí tienes algunos códigos utilizados frecuentemente:
| Código | Idioma |
|---|---|
en |
Inglés |
fr |
Francés |
de |
Alemán |
es |
Español |
pt-BR |
Portugués brasileño |
zh-Hans |
Chino simplificado |
ja |
Japonés |
La solución es directa: elimina cualquier etiqueta <meta http-equiv="Content-Language"> de tu <head> y asegúrate de que tu elemento <html> incluya un atributo lang con el código de idioma apropiado. Este único cambio resuelve la advertencia de validación mientras mejora la accesibilidad, renderizado y cumplimiento de estándares de tu documento.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.