Le critère 8.5 demande qu'à chaque page web soit déclarée sa langue par défaut. Concrètement, c'est l'attribut `lang` sur la balise `<html>`. Un mot, un attribut — et pourtant l'un des oublis les plus fréquents en e-commerce, parce qu'il est invisible à l'œil et qu'aucun bug visuel ne le signale.

Pourquoi ça compte vraiment

Sans `lang`, un lecteur d'écran configuré en français prononce un texte anglais avec la phonétique française — "add to cart" devient une bouillie incompréhensible. La déclaration de langue pilote la voix de synthèse, mais aussi la césure des mots, les guillemets typographiques et la proposition de traduction automatique du navigateur. C'est un réglage qui sert tout le monde, pas seulement les utilisateurs aveugles.

Le minimum strict

<html lang="fr">

Cette ligne doit apparaître sur toutes les pages. Les codes ISO 639-1 (fr, en, de, es, it) sont acceptés ; les codes régionaux (fr-FR, en-US) sont recommandés quand la variante compte. Une seule valeur par page : celle de la langue majoritaire du contenu.

Comment vérifier en 10 secondes

  1. 01Ouvrir la page, clic droit, "Afficher le code source"
  2. 02Vérifier la toute première balise : `<html lang="fr">` et non `<html>` nu
  3. 03Sur un site multilingue, recharger une page /en/ et confirmer que la valeur est passée à `en`

Sites multi-langues

Le `lang` doit changer dynamiquement selon la page servie — un /de/ qui reste en `lang="fr"` est aussi faux qu'une absence d'attribut. Sur Nuxt avec @nuxtjs/i18n, c'est `htmlAttrs.lang` géré via `useHead({ htmlAttrs: { lang: locale.value } })`. Sur PrestaShop, le thème de base injecte normalement la bonne valeur depuis `iso_code_lang` — à revérifier après chaque modification de thème. Sur WooCommerce multilingue (WPML, Polylang), le plugin gère l'attribut, mais un thème custom peut l'écraser.

L'erreur silencieuse du template acheté

Beaucoup de sites traînent un `lang="en"` hérité d'un template HTML acheté, jamais corrigé en `fr`. Tout le site français est alors lu avec une voix anglaise par les lecteurs d'écran. Personne ne le voit — sauf l'utilisateur concerné.

Citations dans une autre langue (critère 8.6)

Si une portion de page est dans une autre langue que la langue principale — un témoignage client en anglais, un nom de produit étranger, une mention légale — entourez-la d'un `<span lang="en">…</span>`. Le lecteur d'écran bascule alors sa prononciation le temps du passage. C'est le critère 8.6, cousin direct du 8.5 : souvent oublié, trivial à corriger.

// Le lien avec le SEO multilingue

L'attribut `lang` n'est pas un signal de classement direct, mais il s'articule avec vos balises `hreflang` : un site dont la langue déclarée contredit le `hreflang` envoie un message incohérent aux moteurs. Cohérence `lang` + `hreflang` = signalement multilingue propre.

Questions fréquentes

fr ou fr-FR ?

Les deux sont valides. `fr` suffit pour la conformité. `fr-FR` (ou `fr-BE`, `fr-CA`) précise la variante régionale et n'est utile que si vous servez réellement des contenus régionalisés. Le plus important reste la cohérence sur l'ensemble du site.

Un lang partout, ou seulement sur <html> ?

Un seul `lang` sur `<html>` pour la langue par défaut de la page (8.5). Des `lang` locaux uniquement sur les passages dans une autre langue (8.6). Inutile d'en mettre sur chaque balise.

Mon sélecteur de langue change-t-il le lang tout seul ?

Pas automatiquement. Changer de langue via un sélecteur doit servir une nouvelle page (ou re-rendre l'application) avec le `lang` mis à jour. Si votre sélecteur ne fait que traduire le texte sans toucher l'attribut, le critère 8.5 reste en échec.

Vérifier le `lang` de chaque page de votre boutique, automatiquement :

→ Lancer un audit