# 04 — Attribut `lang` absent des pages villes

> **Item** : Document language — **required**
> **Verdict** : 🔴 **FAIL** (bug de template, ~622 pages) · **Priorité : P1 — fix de 5 minutes**
> **Effort estimé** : 5 min + rebuild

## Constat

- Accueil, `/contact` : `<html lang="fr">` ✓
- **Pages villes : `document.documentElement.lang` = `null`** — vérifié sur `/nid-guepes-frelons-yerres-91330` et `/nid-guepes-frelons-melun-77000` (2/2, pages chargées et valides). Le template des pages villes n'émet pas l'attribut → le bug touche vraisemblablement **les ~622 pages générées**, soit ~93 % du site.

## Impact

- Sans `lang`, un lecteur d'écran choisit sa voix par défaut : un utilisateur en synthèse anglaise entendra « Nid de guêpes frelons Yerres » prononcé en phonétique anglaise — inintelligible.
- La traduction automatique, la césure et certains moteurs s'appuient aussi sur cet attribut.
- Incohérence de template révélatrice : c'est le même symptôme de divergence que les meta robots absents des pages départements ([SEO issue 11](../../audit-seo/issues/11-finitions-head.md)) — les templates programmatiques ne passent pas par le même layout/helper que les pages « manuelles ».

## Correctif

Dans Gatsby, l'attribut se pose de façon **globale** pour toutes les pages via `gatsby-ssr.js` :

```js
// gatsby-ssr.js
export const onRenderBody = ({ setHtmlAttributes }) => {
  setHtmlAttributes({ lang: 'fr' })
}
```

Si le template villes utilise un `Helmet`/`Head` propre qui écrase `htmlAttributes`, harmoniser : une seule source (le `gatsby-ssr.js` ci-dessus) et supprimer les déclarations locales concurrentes. C'est l'occasion de faire converger les templates programmatiques vers le composant Head commun (cf. chantier [SEO 11](../../audit-seo/issues/11-finitions-head.md)).

Rappel connexe de l'item : tout passage inline dans une autre langue doit porter son propre `lang` (`<span lang="la">Vespa velutina</span>` pour les noms scientifiques latins si présents — à vérifier dans les articles de blog, non bloquant).

## Vérification

```bash
for u in / /nid-guepes-frelons-yerres-91330 /nid-guepes-frelons-melun-77000 /blog /tarifs; do
  echo -n "$u : "; curl -s "https://www.abc-guepes.com$u" | grep -o '<html[^>]*' | head -1
done
# attendu : lang="fr" présent sur CHAQUE ligne
```
