# ADR 012 : Version anglaise

## Statut

**Accepté** (25/10/2026), précise [ADR 005](/decisions/i18n)

## Contexte

La vitrine s'adresse aussi à des publics internationaux : chercheurs, entreprises, étudiants. Les textes d'interface sont maîtrisés. Les données (présentations des laboratoires, titres de projets) n'existent le plus souvent qu'en français.

## Décision

- **Routage** : les pages sont rangées sous `src/app/[lang]/`. Le français est servi **sans préfixe** (`/structures`) et l'anglais sous **`/en`** (`/en/structures`). `next.config.ts` réécrit, avant le routage dynamique (`beforeFiles`), les URL sans préfixe vers `/fr/…`, et redirige `/fr/…` vers l'URL sans préfixe. Les segments d'URL restent en français dans les deux langues.
- **Textes d'interface** : `src/i18n/messages.ts`, un dictionnaire typé. La version anglaise doit fournir toutes les clés, sinon le typage échoue.
- **Libellés d'instance** (nom des groupes, thématiques, types d'entités, introduction) : champ `en` des `Localized` de `research.config.ts`, avec repli sur le français. Un test vérifie que chaque groupe et chaque thématique a son libellé anglais.
- **Données** : publiées dans leur langue d'origine. Les textes français portent `lang="fr"` (accessibilité, synthèse vocale), avec la mention « Text available in French only » sous les présentations. Les disciplines HAL sont traduites grâce au référentiel HAL (`en_domain_s`).
- **Référencement** : `alternates.languages` (hreflang) sur chaque page et dans le sitemap. Un sélecteur de langue en en-tête renvoie vers la même page dans l'autre langue.
- **Recherche** : Pagefind construit un index par langue d'après l'attribut `lang` de `<html>`. Chaque version ne cherche que dans ses propres pages.

## Conséquences

- Le nombre de pages générées double.
- Traduire les présentations des laboratoires est un chantier de contenu, hors code.
- Ajouter une langue demande : un dictionnaire dans `messages.ts`, la langue dans `LOCALES` et dans `site.locales`, et des libellés `Localized` (schéma à étendre au-delà de `fr` et `en`).
