Normativas · WCAG 2.2

SC 3.1.1 Nivel A WCAG 2.0

Idioma de la página

Declare el idioma humano predeterminado de cada página mediante el atributo lang del elemento html para que la tecnología de apoyo pueda procesarlo. Los lectores de pantalla, pantallas braille y herramientas de traducción usan este valor para seleccionar reglas de pronunciación y asignaciones de caracteres adecuados.

Qué exige este criterio

Toda página web debe declarar su idioma humano predeterminado de forma que la tecnología de apoyo pueda procesarlo. En HTML, esto significa incluir un atributo lang válido en el elemento raíz <html>, con una etiqueta de idioma principal conforme a BCP 47 (en, de, bg, zh-Hans). El valor debe reflejar el idioma real del contenido textual — no el idioma del CMS ni el país del servidor.

Una página que combina varios idiomas tiene igualmente un idioma predeterminado; los idiomas secundarios se gestionan mediante el criterio de conformidad 3.1.2 Idioma de las partes.

Cómo cumplirlo

  • Añadir lang al elemento <html> de cada página: <html lang="es">.
  • Usar la etiqueta BCP 47 correcta. Emplear en para el inglés genérico; reservar en-GB o en-US solo cuando la pronunciación regional sea relevante.
  • Para el chino, distinguir el sistema de escritura: zh-Hans (simplificado), zh-Hant (tradicional).
  • Para los idiomas de escritura de derecha a izquierda (árabe, hebreo, persa), combinar lang con dir="rtl".
  • En React, Next.js o Astro, establecer el atributo en la plantilla del diseño raíz — no en el cuerpo de _document — de modo que todas las rutas lo hereden.
  • En sitios multiidioma, cambiar lang por ruta; nunca servir un único valor predeterminado global a páginas localizadas.

Fallos habituales

  • Ausencia total de lang — el fallo más frecuente en sitios heredados y en los generados por plantillas CMS.
  • lang="" (valor vacío) o lang="spanish" — valor no válido; solo se admiten las etiquetas BCP 47.
  • Todas las páginas con lang="en" codificado, aunque el contenido esté en alemán, francés o búlgaro.
  • Una página en español con lang="en" porque la plantilla del CMS tiene el inglés como idioma predeterminado y nadie lo ha modificado.
  • lang definido en <body> en lugar de en <html> — algunas herramientas lo aceptan, pero no es la ubicación canónica.

Por qué es importante

Los lectores de pantalla utilizan lang para seleccionar el sintetizador de voz adecuado. Con un idioma incorrectamente declarado, un lector de pantalla en inglés lee texto en alemán de forma fonética: «Schmetterling» se convierte en sílabas sin sentido. Las pantallas braille lo usan para elegir las tablas de contracciones de grado 2 correspondientes. Las funciones de traducción del navegador lo emplean para detectar el idioma de origen. Los motores de búsqueda lo utilizan para la clasificación y la generación de fragmentos.

Se trata de un ajuste que requiere treinta segundos y que mejora la comprensión para todos los usuarios de lectores de pantalla en la página; aun así, está ausente en una fracción significativa de los sitios en producción. Es uno de los problemas más citados en las auditorías automatizadas porque es binario y fácil de detectar.