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.3 Langue par défaut

Dans chaque page web, la langue par défaut est-elle présente ?

Un lecteur d’écran comme JAWS ou NVDA choisit sa voix de synthèse en fonction de la langue déclarée dans la page. Sans attribut lang sur la balise <html>, il devine. Il peut lire du français avec une prononciation anglaise, produisant une bouillie phonétique incompréhensible pour les utilisateurs aveugles.

Ce critère vérifie une seule chose : la langue par défaut de la page est-elle déclarée dans le code source ? En HTML5 et HTML4, c’est l’attribut lang sur la balise <html>. En XHTML 1.0, il faut les deux attributs lang et xml:lang simultanément. En XHTML 1.1, seul xml:lang s’applique.

Attention : ce critère ne demande pas que le code de langue soit correct. Ça, c’est le critère 8.4. Ici, on vérifie uniquement la présence d’une déclaration, quelle qu’elle soit. Deux critères distincts, deux audits distincts.

Un test pour confirmer que la langue par défaut de la page est indiquée

1️⃣ Présence de l'attribut lang sur <html>

  1. Ouvrez le code source de la page (Ctrl+U ou l’Inspecteur du navigateur).
  2. Repérez la balise <html> en début de document.
  3. Vérifiez selon le type de document :
    • HTML5 ou HTML4 : l’attribut lang doit être présent sur <html> (ex. <html lang="fr">).
    • XHTML 1.0 : les attributs lang ET xml:lang doivent tous les deux figurer sur <html>.
    • XHTML 1.1 : l’attribut xml:lang doit être présent sur <html>.
    • Autre cas : vérifiez que chaque élément de texte ou l’un de ses ancêtres porte une indication de langue.
  4. Si une indication de langue est présente, le test est validé. Si aucune indication n’existe, le test échoue.

Exemples

❌ Non conforme : Page HTML5 sans déclaration de langue

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Accueil - Mon site</title>
</head>
<body>
  <h1>Bienvenue sur notre site</h1>
  <p>Retrouvez toutes nos offres en ligne.</p>
</body>
</html>

La balise <html> ne porte pas d’attribut lang. Le lecteur d’écran ne sait pas dans quelle langue lire le contenu. Il utilisera la langue par défaut de son profil utilisateur, souvent l’anglais, et prononcera le français avec une phonétique incorrecte. Le texte devient incompréhensible à l’écoute.

✅ Conforme : Page HTML5 avec déclaration de langue sur la balise html

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <title>Accueil - Mon site</title>
</head>
<body>
  <h1>Bienvenue sur notre site</h1>
  <p>Retrouvez toutes nos offres en ligne.</p>
</body>
</html>

L’attribut lang="fr" sur <html> indique au lecteur d’écran que la langue principale est le français. La synthèse vocale sélectionne automatiquement une voix francophone et applique les règles phonétiques adaptées. Le critère 8.3 est satisfait.

Astuces et pièges

⚠️ lang présent mais vide : aussi problématique qu’absent

Un <html lang=""> ou <html lang=" "> ne satisfait pas le critère. La valeur doit exister et ne pas être vide. Ce cas est fréquent dans les CMS qui génèrent l’attribut dynamiquement mais omettent de l’alimenter depuis la configuration multilingue du projet.

💡 Critère 8.3 ≠ critère 8.4 : présence vs. exactitude

Le critère 8.3 vérifie uniquement la présence d’une déclaration de langue. Le critère 8.4 vérifie que le code utilisé est valide (ISO 639) et pertinent (correspond bien à la langue du contenu). Une page avec <html lang="xx"> valide le 8.3 mais échoue le 8.4. En audit, traitez-les séparément.

⚠️ XHTML 1.0 : deux attributs obligatoires, pas un seul

En XHTML 1.0, le lang seul ne suffit pas. Il faut aussi xml:lang avec la même valeur, comme suit : <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">. Oublier l’un des deux fait échouer le test 8.3.1. En pratique, ce cas est rare : la quasi-totalité des sites créés depuis 2010 utilisent le doctype HTML5.

💡 Identifier le doctype en deux secondes

Pour savoir quelle règle appliquer, regardez la première ligne du code source. <!DOCTYPE html> = HTML5 (lang sur <html>). Une URI W3C contenant xhtml1-transitional ou xhtml1-strict = XHTML 1.0 (lang et xml:lang). Une URI contenant xhtml11 = XHTML 1.1 (xml:lang uniquement).

Questions fréquentes

Quelle est la différence entre les critères RGAA 8.3 et 8.4 ?

Le critère 8.3 vérifie uniquement que l’attribut lang est présent sur <html>. Le critère 8.4 vérifie que la valeur de cet attribut est un code ISO 639 valide et correspond à la langue principale du document. Les deux sont complémentaires : 8.3 = présence, 8.4 = exactitude. Un lang absent échoue le 8.3. Un lang="xx" invalide passe le 8.3 mais échoue le 8.4.

Comment tester le critère RGAA 8.3 sur l'attribut lang lors d'un audit ?

Ouvrez le code source (Ctrl+U sur la plupart des navigateurs) et cherchez la première occurrence de <html. Vérifiez si l’attribut lang est présent et non vide. Vous pouvez aussi utiliser l’inspecteur du navigateur ou le W3C Validator, qui signale l’absence de lang parmi ses avertissements.

Pourquoi l'attribut lang doit-il être placé sur <html> et non sur <body> ?

Non, pas directement. La méthode principale est de déclarer lang sur <html>. La méthodologie RGAA prévoit un cas de repli : si l’attribut n’est pas sur <html>, chaque élément de texte ou l’un de ses parents doit porter l’indication de langue. En pratique, c’est une solution très lourde à maintenir. Placez toujours lang sur <html>.

Comment déclarer la langue par défaut d'un site multilingue selon le RGAA ?

Déclarez sur <html> la langue principale de la page affichée, pas la langue de l’interface ou du navigateur. Une page de contenu en anglais doit avoir <html lang="en">, même si le reste du site est en français. Chaque page gère son propre lang indépendamment des autres.

Comment configurer l'attribut lang avec Next.js ou React pour respecter le RGAA ?

Non, pas par défaut. En Next.js, configurer i18n.defaultLocale dans next.config.js injecte automatiquement le lang correct sur <html>. En React classique, vous devez le définir manuellement dans votre fichier index.html ou dans le composant racine. Vérifiez toujours le rendu final dans le navigateur : certains SSR écrasent l’attribut au montage.

Références

RGAA 4.1.2 : Critère 8.3
WCAG 2.1 :3.1.1 (A)H573.1.1 (A)
Critère suivant8.4 : Pertinence du code de langueCritère précédent8.2 : Validité du code source
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