Aller au contenu principal

Internationalisation (i18n)

Le site est entièrement localisé avec next-intl.

Stratégie de routage

Nous utilisons le routage par sous-chemin :

  • /en/about → Anglais
  • /fr/about → Français

C'est géré par le middleware.ts qui détecte la langue préférée de l'utilisateur (en-tête Accept-Language) et redirige si besoin.

Structure des fichiers

Toutes les pages visibles sont regroupées dans un répertoire [locale].

src/app/
└── [locale]/
├── layout.tsx # Serveur : charge les messages pour la locale
├── page.tsx # Page d'accueil
└── blog/...

Messages

Les traductions sont dans messages/en.json et messages/fr.json. On y accède dans les composants via le hook useTranslations.

import { useTranslations } from "next-intl";

export default function Hero() {
const t = useTranslations("Hero");
return <h1>{t("title")}</h1>;
}