Accéder au contenu principalAccéder à la navigationAccéder au pied de page
Page d'accueil IncluddyPage d'accueil Includdy
  • FAQ
  • Blog
  • Contact
Includdy

Rendons le web accessible à tous

Produit

  • Scan automatique
  • Correction guidée
  • Collaboration

Ressources

  • FAQ
  • Blog
  • Glossaire
  • RGAA
  • Plan du site

Légal

  • CGU
  • CGV
  • Mentions légales
  • Politique de confidentialité

© 2026 Includdy. Tous droits réservés.

  1. Accueil
  2. RGAA 4.1.2
  3. Éléments obligatoires
  4. 8.7 Changement de langue

Dans chaque page web, chaque changement de langue est-il indiqué dans le code source (hors cas particuliers) ?

Un lecteur d’écran lit la page avec une voix configurée pour la langue du document. Quand il rencontre un extrait en anglais dans une page française sans indication de langue, il lit cet anglais avec une phonologie française. Le résultat est incompréhensible. Pas d’indication de langue, pas de bonne prononciation.

Chaque passage de texte dans une langue différente de celle déclarée sur <html> doit porter un attribut lang — sur l’élément lui-même ou sur l’un de ses éléments parents. Une citation anglaise dans un <blockquote lang="en">, un terme technique en latin dans un <span lang="la"> : la granularité peut être fine ou large selon la structure du DOM.

Le critère admet des exceptions précises : les noms propres (Shakespeare, Toyota), les mots étrangers intégrés dans le dictionnaire officiel de la langue du document (le Larousse reconnaît « email », « week-end », « parking » comme français) et les termes d’usage courant dont la prononciation ne crée pas de confusion. Ces cas n’ont pas besoin de lang.

Un test pour s'assurer que les changements de langue sont signalés dans le code

1️⃣ Attribut lang sur les passages en langue étrangère

  1. Identifiez tous les passages de texte dans une langue différente de la langue par défaut de la page (déclarée sur <html lang="...">).
  2. Excluez de la vérification :
    • Les noms propres (Shakespeare, Volkswagen, Tokyo)
    • Les mots étrangers présents dans le dictionnaire officiel de la langue du document (ex. : « email », « sandwich » en français)
    • Les mots étrangers d’usage courant dont la prononciation ne génère pas d’incompréhension
  3. Pour chaque passage restant, vérifiez qu’un attribut lang (ou xml:lang) est présent sur l’élément lui-même ou sur l’un de ses éléments parents.
  4. Si tous les passages retenus portent cette indication de langue, le test est validé.

Exemples

❌ Non conforme : Citation anglaise sans indication de langue

<p>Comme l'écrivait Hamlet : <q>To be or not to be, that is the question.</q></p>

Le lecteur d’écran lit cette citation avec la voix française. Chaque mot anglais est prononcé selon des règles phonétiques françaises, rendant le contenu incompréhensible pour l’utilisateur de synthèse vocale.

✅ Conforme : Citation anglaise avec attribut lang

<p>Comme l'écrivait Hamlet : <q lang="en">To be or not to be, that is the question.</q></p>

L’attribut lang="en" sur le <q> indique au lecteur d’écran de basculer vers une voix anglaise. L’utilisateur entend une prononciation correcte et comprend le texte sans ambiguïté.

✅ Conforme : Bloc en allemand avec lang sur l’élément parent

<blockquote lang="de">
  <p>Da dachte der Herr daran, ihn aus dem Futter zu schaffen.</p>
</blockquote>

L’attribut lang placé sur le <blockquote> couvre tous ses éléments enfants. Pas besoin de répéter l’attribut sur chaque <p> interne : l’héritage CSS fait le travail.

Astuces et pièges

⚠️ Taguer les noms propres avec lang, une perte de temps en audit

Shakespeare, Toyota, Barack Obama : ces noms propres n’ont pas besoin d’un attribut lang, même s’ils sont d’origine étrangère. Le RGAA les exclut explicitement. En audit, c’est souvent l’erreur inverse qui se produit : des équipes qui taguent les noms propres et laissent passer de vraies citations sans indication de langue.

⚠️ Les mots du dictionnaire officiel n’ont pas besoin de lang

Si un mot étranger figure dans le dictionnaire officiel de la langue du document (le Larousse ou le Robert pour le français), le critère ne s’applique pas. « Email », « week-end », « parking », « sandwich » sont des mots français. Un lecteur d’écran avec une voix française les prononce correctement sans lang.

💡 Posez lang sur le conteneur parent pour un bloc entier

Si une section entière est rédigée dans une autre langue (une FAQ en anglais, un article traduit), posez lang sur le conteneur plutôt que sur chaque phrase. <section lang="en"> couvre tous les éléments enfants. Cela réduit la verbosité du code sans perdre en conformité.

⚠️ NVDA ne bascule pas : le code est bon, le synthétiseur est limité

Un lang correct dans le code ne garantit pas le changement de voix dans tous les environnements. Avec NVDA et la voix « Hortense » (Microsoft OneCore par défaut), aucun changement de voix ne se produit car cette voix n’est pas multi-accent. L’audit porte sur le code source, pas sur le comportement de chaque synthétiseur. Si lang est présent et valide, le critère est respecté.

⚠️ Une valeur lang incorrecte vaut zéro

L’attribut lang doit contenir une balise BCP 47 valide : en, fr, de, pt-BR. Une valeur comme lang="english" ou lang="anglais" est incorrecte et ignorée par les lecteurs d’écran. Utilisez les codes ISO 639-1 à deux lettres, avec sous-étiquette régionale si nécessaire (zh-Hans pour le chinois simplifié, pt-BR pour le portugais du Brésil).

Questions fréquentes

Comment savoir si un mot étranger doit porter l'attribut lang en RGAA ?

Deux questions suffisent. Ce mot est-il dans le dictionnaire officiel de la langue de la page (pour le français, celui de l’Académie française) ? Si oui, pas de lang. Si non, la prononciation mécanique dans la langue d’origine provoquerait-elle une incompréhension ? Si oui, lang est requis. Le critère vise à améliorer la compréhension, pas à respecter l’étymologie stricte des mots.

Comment appliquer l'attribut lang à un élément parent pour les passages étrangers en RGAA ?

Oui. L’attribut lang est hérité dans le DOM. Si tout un <section> ou un <article> est rédigé en anglais, un lang="en" sur cet élément couvre l’ensemble de ses descendants. Vous n’avez pas à répéter l’attribut sur chaque <p>. Un seul lang sur l’ancêtre commun suffit.

Quelle valeur d'attribut lang respecte les exigences RGAA pour identifier une langue ?

Les codes de langue BCP 47. Le code primaire suffit dans presque tous les cas : lang="en" pour l’anglais, lang="de" pour l’allemand, lang="es" pour l’espagnol. Les sous-codes régionaux (lang="en-GB", lang="pt-BR") sont optionnels et ne sont utiles que si la distinction régionale a un impact sur la prononciation ou la compréhension.

Comment auditer le critère RGAA 8.7 sur les changements de langue efficacement ?

Parcourez la page visuellement et repérez les passages en langue étrangère. Inspectez ensuite le DOM avec les DevTools : sélectionnez l’élément et vérifiez la présence de lang sur lui ou sur ses ancêtres dans le panneau « Elements ». Vérifiez aussi que la valeur est un code de langue valide (deux lettres en minuscules pour le code primaire). Des outils comme Includdy facilitent cette vérification sur des pages denses.

Quelle différence entre xml:lang et lang pour la conformité RGAA ?

En HTML5, lang seul suffit. L’attribut xml:lang n’est utile que pour les documents servis en XHTML strict (type MIME application/xhtml+xml). Pour un document HTML classique, lang est suffisant. Si vous maintenez un site XHTML hérité, précisez les deux attributs avec la même valeur pour maximiser la compatibilité.

Références

RGAA 4.1.2 : Critère 8.7
WCAG 2.1 :3.1.2 (AA)H583.1.2 (AA)
Critère suivant8.8 : Validité du code de langueCritère précédent8.6 : Pertinence du titre de page
1.Images
2.Cadres
3.Couleurs
4.Multimédia
5.Tableaux
6.Liens
7.Scripts
8.Éléments obligatoires
8.18.28.38.48.58.68.78.88.98.10
9.Structuration de l’information
10.Présentation de l’information
11.Formulaires
12.Navigation
13.Consultation