Criterios de éxito de las WCAG · Level AA
WCAG 3.1.2: Idioma de las partes
WCAG 3.1.2 requiere que cualquier pasaje, frase o sección de contenido web escrito en un idioma diferente del idioma principal de la página se identifique de forma programática utilizando el atributo lang. Esto permite que las tecnologías de asistencia, especialmente los lectores de pantalla, cambien automáticamente los motores de pronunciación y presenten el contenido con precisión para las personas que dependen de la salida de audio.
Qué Significa Esta Regla
WCAG 3.1.2 — Lengua de las Partes es un criterio de Nivel AA bajo el principio de Comprensible. Se basa directamente en 3.1.1 (Lengua de la Página), que exige que se declare la lengua principal de toda la página. El criterio 3.1.2 va más allá: siempre que un pasaje, frase o sección de contenido esté escrito en una lengua diferente de la lengua predeterminada de la página, esa parte debe llevar un atributo lang que identifique su lengua específica.
En términos prácticos de HTML, esto significa aplicar el atributo lang a cualquier elemento que envuelva un cambio de lengua. El valor del atributo debe ser una etiqueta de lengua BCP 47 válida — por ejemplo, lang='en' para inglés, lang='fr' para francés, lang='de' para alemán o lang='tr' para turco. Se permiten y se recomiendan los subcódigos de región (como lang='en-US' o lang='tr-TR') cuando la pronunciación específica de un dialecto es importante.
Se considera que hay un cumplimiento cuando cada segmento lingüístico distinto que una persona lectora percibiría como perteneciente a una lengua diferente está envuelto en un elemento con el atributo lang correcto. Se produce un incumplimiento cuando hay un pasaje en una lengua diferente pero no lleva ningún atributo lang, o lleva uno incorrecto — por ejemplo, etiquetar una frase en francés como lang='de'.
WCAG reconoce tres excepciones explícitas a este criterio. En primer lugar, los nombres propios — nombres de personas, marcas, nombres geográficos — no necesitan etiquetado de lengua incluso cuando proceden de otra lengua. En segundo lugar, los términos técnicos que se reconocen como elementos de vocabulario dentro de la lengua principal (como la frase latina in vitro utilizada en una página médica en inglés) están exentos. En tercer lugar, las palabras de lengua indeterminada — palabras que han sido absorbidas tan completamente por la lengua principal que su origen es ambiguo — también están exentas. Estas excepciones reflejan la realidad práctica de que muchos préstamos lingüísticos no requieren un cambio de pronunciación para ser comprendidos correctamente.
El atributo lang puede colocarse en cualquier elemento HTML, incluidos <span>, <p>, <div>, <blockquote>, <section> o incluso <td> en una celda de tabla. El atributo se hereda por todos los elementos descendientes, por lo que etiquetar un contenedor de alto nivel es suficiente si todo un bloque está en la lengua de destino. Solo es necesario etiquetar elementos en línea individuales cuando se intercalan frases cortas dentro de párrafos que por lo demás son monolingües.
Por Qué Importa
Las personas beneficiarias principales de este criterio son las personas usuarias de lectores de pantalla, en particular quienes son ciegas o tienen baja visión. Los lectores de pantalla dependen de motores de conversión de texto a voz (TTS) que son específicos de cada lengua. Cuando un lector de pantalla en turco se encuentra con una frase en francés sin un atributo lang='fr', intenta pronunciar las palabras francesas utilizando reglas fonéticas turcas, produciendo una salida en gran medida ininteligible. La persona oyente puede ni siquiera darse cuenta de que se ha producido un cambio de lengua — simplemente oye un audio distorsionado y pierde por completo la comprensión del contenido.
Considere un escenario real común en sitios web turcos de comercio electrónico y turismo: una página de producto escrita en turco que incluye el nombre de la marca y un breve eslogan de marketing en inglés, seguido de una cláusula legal en francés para clientes europeos. Sin etiquetado de lengua en los segmentos en inglés y francés, una persona ciega que dependa de una voz TTS en turco oirá tres segmentos pronunciados como si fueran turcos. El eslogan en inglés puede ser deducible por similitud fonética, pero el texto legal en francés se vuelve completamente incomprensible — lo que puede hacer que la persona usuaria pase por alto información contractual o de seguridad crítica.
Las personas con discapacidades cognitivas que dependen de herramientas de lectura de texto a voz (no solo lectores de pantalla dedicados) también se ven afectadas. Muchas extensiones de navegador de asistencia de lectura de uso general utilizan el atributo lang para seleccionar la voz correcta. Sin él, la herramienta ignora el cambio de lengua o recurre a una sola voz para toda la página, lo que socava la comprensión.
Más allá de la accesibilidad, el etiquetado correcto de la lengua proporciona beneficios SEO medibles. Los motores de búsqueda utilizan los atributos lang para indexar correctamente el contenido multilingüe, mejorando la probabilidad de que las páginas específicas de una lengua aparezcan en resultados de búsqueda dirigidos geográfica y lingüísticamente. Los navegadores también utilizan el atributo para ofrecer sugerencias de traducción precisas, y las herramientas de corrección ortográfica lo consultan para aplicar el diccionario adecuado. En resumen, un marcado correcto de la lengua beneficia a todas las personas usuarias — no solo a quienes tienen discapacidades.
Se estima que más de 2,2 mil millones de personas en todo el mundo tienen algún tipo de discapacidad visual, y decenas de millones dependen diariamente de lectores de pantalla. El contenido web multilingüe es cada vez más la norma en los mercados internacionales, lo que hace que el cumplimiento de Lengua de las Partes sea fundamental para cualquier sitio que atienda a una audiencia global o multilingüe.
Reglas Relacionadas de Axe-core
WCAG 3.1.2 requiere pruebas manuales porque las herramientas automatizadas no pueden identificar de forma fiable qué partes del texto de una página están escritas en una lengua diferente de la predeterminada de la página sin aplicar algoritmos de detección de lengua (NLP) — e incluso estos pueden ser inciertos con frases cortas, nombres propios y terminología técnica.
- Inspección manual — detección de lengua: Los escáneres automatizados como axe-core pueden verificar que el atributo
langen el elemento<html>esté presente y sea válido (cubierto por las reglashtml-has-langyhtml-lang-valid), pero no pueden leer todo el cuerpo de texto y determinar si un pasaje dado es lingüísticamente francés, alemán o japonés. Una herramienta no tiene comprensión semántica de si la cadena "Bonjour tout le monde" es francés o una frase inventada, por lo que no puede señalar la ausencia delang='fr'en el elemento que la rodea. - Inspección manual — valores lang incorrectos: Si una persona desarrolladora ha colocado un atributo
langen un elemento pero ha asignado el código de lengua equivocado (por ejemplo, marcando texto en español comolang='pt'), las herramientas automatizadas verán una etiqueta BCP 47 válida e informarán de que no hay error. Solo una persona revisora que lea ambas lenguas puede identificar la discrepancia. - Inspección manual — alcance de los cambios de lengua: Incluso cuando existen atributos
lang, una persona debe confirmar que el atributo cubre toda la extensión del pasaje en lengua extranjera — no solo la primera frase, y sin extenderse a contenido adyacente que pertenezca a la lengua principal. Las herramientas automatizadas carecen de la comprensión lectora necesaria para hacer este juicio.
Cómo Probar
- Exploración automatizada de referencia: Ejecute axe DevTools (extensión de navegador o integración en CI) o Google Lighthouse sobre la página. Busque cualquier infracción de
html-has-langohtml-lang-valid— estas indican que incluso la declaración de lengua a nivel de página falta o es incorrecta, lo cual es un problema previo que debe corregirse antes de abordar 3.1.2. Tenga en cuenta que ninguna de las dos herramientas señalará atributoslangen línea faltantes, por lo que este paso solo establece una referencia. - Auditoría visual de contenido: Lea todo el contenido de la página e identifique cada pasaje, frase o bloque que esté visiblemente escrito en una lengua distinta de la lengua declarada de la página. Mantenga una lista de estos elementos, anotando su ubicación en el DOM. Compruebe cada elemento (o su ancestro más cercano) en busca de un atributo
langen el inspector del DOM del navegador (Herramientas de desarrollo del navegador → panel Elements). Verifique que el valor sea una etiqueta BCP 47 válida que coincida con la lengua real del contenido. - Prueba con lector de pantalla — NVDA + Firefox (Windows): Abra la página con NVDA activo usando Firefox. Navegue por el contenido con las teclas de flecha, centrándose en los pasajes en lengua extranjera que haya identificado. Escuche con atención: NVDA debería cambiar la pronunciación automáticamente cuando encuentre un atributo
langcorrectamente etiquetado. Si el texto en lengua extranjera se lee con las reglas de pronunciación de la lengua predeterminada sin ningún cambio de voz perceptible, es probable que el atributolangfalte o sea incorrecto. - Prueba con lector de pantalla — JAWS + Chrome (Windows): Con JAWS en ejecución en Chrome, use el cursor virtual para leer la página. El comportamiento de JAWS refleja el de NVDA — cambiará de motor TTS en función de los valores de
lang. Active el modo de voz detallado para oír los anuncios de lengua. Tome nota de cualquier pasaje en el que la pronunciación suene incorrecta para la lengua visible. - Prueba con lector de pantalla — VoiceOver + Safari (macOS/iOS): Active VoiceOver y navegue por la página con VO+flecha derecha. Para las pruebas móviles en iOS, deslice el dedo por el contenido. VoiceOver en Safari también respeta los atributos
langy cambia de voz en consecuencia. Si su dispositivo tiene instalados paquetes de voz para las lenguas extranjeras previstas, oirá un cambio de voz claro en los elementos correctamente etiquetados. - Validación de etiquetas BCP 47: Para cualquier valor
langque encuentre, valídelo frente al Registro de Subetiquetas de Lengua de IANA o utilice un validador BCP 47 en línea. Los errores comunes incluyen usarlang='en-us'(el código de región en minúsculas es técnicamente válido pero poco convencional) o códigos no válidos comolang='english'.
Cómo Corregir
Frase en lengua extranjera en línea en un párrafo en turco — Incorrecto
<p>
Bu ürün uluslararası standartlara uygundur ve
<em>state of the art</em> teknoloji kullanmaktadır.
</p>
Frase en lengua extranjera en línea en un párrafo en turco — Correcto
<p>
Bu ürün uluslararası standartlara uygundur ve
<!-- lang='en' tells screen readers to switch to an English TTS engine -->
<em lang='en'>state of the art</em> teknoloji kullanmaktadır.
</p>
Cita en bloque de varias frases en una lengua extranjera — Incorrecto
<blockquote>
<p>La liberté commence où l'ignorance finit.</p>
<p>— Victor Hugo</p>
</blockquote>
Cita en bloque de varias frases en una lengua extranjera — Correcto
<!-- lang='fr' applied to the blockquote covers all descendant content -->
<blockquote lang='fr'>
<p>La liberté commence où l'ignorance finit.</p>
<p>— Victor Hugo</p>
</blockquote>
Menú de navegación bilingüe — Incorrecto
<nav>
<ul>
<li><a href='/tr/anasayfa'>Anasayfa</a></li>
<li><a href='/en/home'>Home</a></li>
<li><a href='/de/startseite'>Startseite</a></li>
</ul>
</nav>
Menú de navegación bilingüe — Correcto
<nav>
<ul>
<!-- Primary language (Turkish) needs no extra attribute if html lang='tr' -->
<li><a href='/tr/anasayfa'>Anasayfa</a></li>
<!-- English and German links receive their own lang attributes -->
<li><a href='/en/home' lang='en'>Home</a></li>
<li><a href='/de/startseite' lang='de'>Startseite</a></li>
</ul>
</nav>
Tabla con celdas de datos multilingües — Incorrecto
<table>
<tr>
<th>Ülke</th>
<th>Slogan</th>
</tr>
<tr>
<td>Fransa</td>
<td>Liberté, Égalité, Fraternité</td>
</tr>
<tr>
<td>Almanya</td>
<td>Einigkeit und Recht und Freiheit</td>
</tr>
</table>
Tabla con celdas de datos multilingües — Correcto
<table>
<tr>
<th>Ülke</th>
<th>Slogan</th>
</tr>
<!-- lang applied to individual td elements containing foreign text -->
<tr>
<td>Fransa</td>
<td lang='fr'>Liberté, Égalité, Fraternité</td>
</tr>
<tr>
<td>Almanya</td>
<td lang='de'>Einigkeit und Recht und Freiheit</td>
</tr>
</table>
Errores Comunes
- Omitir atributos
langen frases cortas en línea: Las personas desarrolladoras suelen etiquetar secciones extensas en lengua extranjera pero pasan por alto frases cortas como un eslogan de marketing en inglés de dos palabras incrustado en una frase que por lo demás está en turco. Incluso los términos de una sola palabra en lengua extranjera que no sean nombres propios exentos o vocabulario técnico requieren etiquetado. - Usar una etiqueta BCP 47 incorrecta: Escribir
lang='english',lang='turkish'olang='français'en lugar de los códigos ISO correctos (lang='en',lang='tr',lang='fr') hace que el atributo sea inválido y los lectores de pantalla pueden ignorarlo por completo. - Confiar en CSS o en el estilo visual para implicar un cambio de lengua: Cambiar la fuente, el color o poner en cursiva el texto en lengua extranjera señala la diferencia de lengua a las personas videntes, pero no proporciona información programática a las tecnologías de asistencia. El atributo
langes el único mecanismo que funciona para los lectores de pantalla. - Suponer que las personas usuarias de lectores de pantalla lo "deducirán" por el contexto: Esperar que una persona ciega deduzca que un pasaje que suena distorsionado es en realidad francés porque el texto circundante en turco hacía referencia a Francia es una expectativa irrazonable que traslada la carga de la comprensión a la persona usuaria.
- Etiquetar solo el primer elemento de un bloque en lengua extranjera compuesto por varios elementos: Si tres elementos
<p>consecutivos contienen un pasaje en francés, colocarlang='fr'solo en el primer párrafo deja los otros dos párrafos sin etiquetar. El enfoque correcto es envolver los tres en un elemento padre conlang='fr'o añadir el atributo a cada párrafo individualmente. - Confundir nombres propios con frases completas en lengua extranjera: La excepción de WCAG para nombres propios cubre nombres como "Paris" o "Volkswagen" — no frases completas ni textos publicitarios escritos en francés o alemán. Las personas desarrolladoras a veces aplican mal esta excepción para justificar omitir el etiquetado
langen contenido sustancial en lengua extranjera. - Contenido inyectado dinámicamente sin atributos de lengua: Cuando el contenido en lengua extranjera se carga mediante JavaScript (por ejemplo, un bloque de preguntas frecuentes gestionado por un CMS o una descripción de producto traducida obtenida de una API), las personas desarrolladoras a menudo olvidan incluir el atributo
langen el marcado inyectado. Las canalizaciones de renderizado del lado del servidor o del cliente deben transmitir los metadatos de lengua junto con el contenido de texto. - Usar
xml:langen documentos HTML5 sinlang: En contextos XHTML,xml:langera el atributo apropiado. En HTML5, el atributo correcto eslang. Usar soloxml:langen un documento HTML5 puede funcionar en algunos navegadores, pero no está universalmente soportado por todas las tecnologías de asistencia. - Colocar
langen un contenedor demasiado amplio que también incluye contenido en la lengua principal: Envolver una sección que contiene texto en turco y en francés íntegramente enlang='fr'hará que las partes en turco se pronuncien incorrectamente. El alcance del atributo debe coincidir con el límite lingüístico con precisión. - No probar con lectores de pantalla reales después de aplicar correcciones: Las personas desarrolladoras con frecuencia añaden atributos
langy consideran que la corrección está completa sin verificar la salida TTS real. Probar con NVDA, JAWS o VoiceOver es la única manera de confirmar que la mejora en la pronunciación es perceptible para las personas usuarias finales.
Relación con la Normativa de Accesibilidad de Turquía
La Circular Presidencial 2025/10 de Turquía, publicada en el Boletín Oficial nº 32933 el 21 de junio de 2025, establece un marco vinculante para la accesibilidad digital en una amplia gama de entidades de los sectores público y privado. La circular incorpora formalmente WCAG 2.2 como estándar técnico, con la conformidad de Nivel AA como requisito básico para el cumplimiento legal.
WCAG 3.1.2 — Lengua de las Partes es un criterio de Nivel AA, lo que lo sitúa claramente dentro del objetivo de conformidad obligatoria definido por la circular. Las entidades que operan sitios web multilingües — algo común en Turquía dado el papel del país como encrucijada del comercio europeo, de Oriente Medio y de Asia Central — tienen una obligación reforzada de aplicar correctamente este criterio. Un banco turco que publique condiciones de divisas en inglés, una operadora de telecomunicaciones que incluya cláusulas de acuerdos de itinerancia en alemán o el sitio web de un hospital que reproduzca formularios de consentimiento de pacientes en árabe deben asegurarse de que cada pasaje en lengua extranjera esté etiquetado de forma programática.
Los tipos de entidades cubiertas por la circular incluyen instituciones y organismos públicos, plataformas de comercio electrónico, bancos e instituciones financieras, hospitales y proveedores de servicios sanitarios, empresas de telecomunicaciones con 200,000 o más abonados, agencias de viajes, empresas de transporte privado y escuelas privadas autorizadas por el Ministerio de Educación Nacional (MoNE). Para todas estas entidades, no alcanzar la conformidad de Nivel AA — incluido 3.1.2 — puede dar lugar a sanciones administrativas y a la inelegibilidad para el Logotipo de Accesibilidad (Erişilebilirlik Logosu) emitido por el Ministerio de Familia y Servicios Sociales.
El Erişilebilirlik Logosu es cada vez más reconocido como una señal de confianza en el mercado turco, especialmente en el comercio electrónico y los servicios financieros. Lograr y mantener el logotipo requiere demostrar el cumplimiento de todos los criterios de Nivel AA, y Lengua de las Partes es particularmente relevante para las entidades turcas que atienden a clientela internacional o publican documentos jurídicamente vinculantes en varias lenguas. Dado que la legislación turca exige que ciertos avisos (como los avisos de derechos de las personas consumidoras y las condiciones de productos financieros) sean comprensibles para las personas usuarias con discapacidades, el etiquetado de lengua no es solo una buena práctica técnica — forma parte de la obligación de comunicación accesible integrada en el mandato más amplio de la circular.
Se recomienda a las organizaciones que busquen el logotipo que realicen auditorías estructuradas de contenido para identificar todos los pasajes en lengua extranjera en sus propiedades digitales, que implementen un proceso de desarrollo que haga cumplir la aplicación del atributo lang en la capa de gestión de contenidos y que incluyan Lengua de las Partes en sus protocolos habituales de pruebas de accesibilidad junto con ciclos de revisión automatizados y manuales.
