Acerca de este problema HTML
El atributo lang en el elemento <html> le dice a los navegadores, lectores de pantalla y motores de búsqueda en qué idioma está escrito el contenido de la página. Su valor debe seguir el estándar BCP 47, que utiliza códigos de idioma ISO 639 como la subetiqueta de idioma principal. Cuando el validador reporta que una subetiqueta de idioma “no es una parte de idioma ISO válida de una etiqueta de idioma”, significa que el código que proporcionaste no coincide con ningún idioma reconocido en el registro ISO 639.
Causas comunes
Errores tipográficos en el código de idioma
Un simple error de escritura como emg en lugar de en, o fre en lugar de fr, provocará este error.
Usar un código de país en lugar de un código de idioma
Los códigos de país (ISO 3166) y los códigos de idioma (ISO 639) son estándares diferentes. Por ejemplo, uk es el código de país para el Reino Unido, pero también es el código de idioma válido para ucraniano. Usar gb (Gran Bretaña) como idioma sería inválido. De manera similar, us no es un código de idioma — necesitas en para inglés o en-US para inglés americano específicamente.
Usar códigos inventados o obsoletos
Códigos como xx, en-UK, u otros valores no estándar fallarán en la validación. Ten en cuenta que aunque en-US y en-GB son válidos (formato idioma-región), en-UK no lo es porque UK no es la subetiqueta de región ISO 3166-1 correcta para el Reino Unido — GB sí lo es.
Por qué esto importa
-
Accesibilidad: Los lectores de pantalla dependen del atributo
langpara seleccionar las reglas de pronunciación correctas y el perfil de voz. Un código de idioma inválido puede hacer que la tecnología asistiva pronuncie mal el contenido o recurra a un idioma predeterminado. -
SEO: Los motores de búsqueda usan el atributo
langcomo una señal para servir el contenido correcto a los usuarios en el idioma y región apropiados. - Comportamiento del navegador: Los navegadores usan la etiqueta de idioma para corrección ortográfica, separación de sílabas, selección de fuentes y otras decisiones de renderizado sensibles al idioma.
Cómo solucionarlo
- Identifica el idioma en el que está escrita tu página.
- Busca el código ISO 639-1 de dos letras correcto (preferido) o el código ISO 639-2 de tres letras para ese idioma.
-
Si necesitas especificar una variante regional, añade un guión y el código de región ISO 3166-1 (ej.,
pt-BRpara portugués brasileño). -
Reemplaza el valor inválido en el atributo
lang.
Algunos códigos de idioma válidos comúnmente usados:
| Idioma | Código |
|---|---|
| Inglés |
en |
| Inglés (EE.UU.) |
en-US |
| Inglés (Reino Unido) |
en-GB |
| Español |
es |
| Francés |
fr |
| Alemán |
de |
| Portugués (Brasil) |
pt-BR |
| Chino (Simplificado) |
zh-Hans |
| Japonés |
ja |
| Árabe |
ar |
Ejemplos
❌ Inválido: Error tipográfico en el código de idioma
<html lang="emg">
❌ Inválido: Código de país usado en lugar de código de idioma
<html lang="us">
❌ Inválido: Subetiqueta de región incorrecta
<html lang="en-UK">
❌ Inválido: Código de idioma inventado
<html lang="english">
✅ Válido: Código de idioma de dos letras correcto
<html lang="en">
✅ Válido: Idioma con subetiqueta de región
<html lang="en-GB">
✅ Válido: Documento completo con atributo lang apropiado
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Ma page</title>
</head>
<body>
<p>Bonjour le monde !</p>
</body>
</html>
Puedes verificar tu etiqueta de idioma usando el Registro de Subetiquetas de Idioma de IANA o la herramienta de búsqueda de subetiquetas de idioma BCP 47 para asegurar que tu código sea válido antes de actualizar tu marcado.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.