Que fait Configuration i18n Next.js (nextjs-i18n-setup) ?
Bootstrap et échafaudage de next-intl dans un projet existant Next.js App Router en utilisant les fonctionnalités modernes next/root-params, le segment dynamique app/[locale]/, et Next.js 16+ (proxy.ts) / Next.js ≤15 (middleware.ts).
[!TIP] Modèles & Templates : Consultez
references/templates.mdpour des modèles de code prêts à l'emploi lors de l'échafaudage des fichiers. Exécution rapide : Déléguez la vérification à un sous-agent léger (Modèle : 'flash').
1. Règles et exigences architecturales
- Contrat des métadonnées : Assurez-vous que
docs/project.jsoncontient :"dictionaries_dir": "messages", "dictionary_file_pattern": "[locale].json" - Intercepteur de version Next.js :
- Next.js 16+ : Utilisez
proxy.ts(ousrc/proxy.ts). Migrez et supprimez toutmiddleware.tsobsolète. - Next.js ≤15 : Utilisez
middleware.ts(ousrc/middleware.ts).
- Next.js 16+ : Utilisez
- Root Params modernes : Utilisez
next/root-params(await rootParams.locale()) dansi18n/request.ts.requestLocaleetsetRequestLocale()sont interdits. - Navigation : Exportez
Link,redirect,usePathname,useRouterdepuisi18n/navigation.ts(TypeScript pur, zéro JSX). - Génération statique : La mise en page racine
app/[locale]/layout.tsxDOIT exportergenerateStaticParams()retournant{ locale }pour toutes les locales prises en charge.
2. Liste de vérification de l'installation
- Étape 0 : Audit : Vérifiez
docs/project.json(supported_languages) et la version de Next.js danspackage.json. - Étape 1 : Installation : Exécutez
<pkg_mgr> add next-intl(pnpm add next-intl). - Étape 2 : Métadonnées de configuration : Assurez-vous que
dictionaries_dir: "messages"est présent dansdocs/project.json. - Étape 3 : Routage : Créez
i18n/routing.tsen utilisantdefineRouting(voir templates). - Étape 4 : Gestionnaire de requêtes : Créez
i18n/request.tsen utilisantnext/root-params(voir templates). - Étape 5 : Helpers de navigation : Créez
i18n/navigation.ts(voir templates). - Étape 6 : Plugin Next.js : Enveloppez
next.config.tsaveccreateNextIntlPlugin()(voir templates). - Étape 7 : Intercepteur : Créez
proxy.ts(Next 16+) oumiddleware.ts(Next ≤15) avec un matcher de filtrage des ressources statiques (voir templates). - Étape 8 : Dictionnaires de démarrage : Assurez-vous que
messages/[locale].jsonexiste pour toutes les locales prises en charge avec des clés de base correspondantes. - Étape 9 : Migrer la mise en page et les routes : Déplacez les routes de premier niveau vers
app/[locale]/. Configurezdir,lang,generateStaticParamsdynamique, et<NextIntlClientProvider>(voir templates). - Étape 10 : Augmentation de type : Déclarez
AppConfig.Messagesdansglobal.d.ts(voir templates). - Étape 11 : Importations de navigation : Mettez à jour les liens internes dans les composants existants pour utiliser
@/i18n/navigation. - Étape 12 : Vérification : Exécutez le script de vérification et la construction :
pwsh .agents/skills/nextjs-i18n-setup/scripts/verify-setup.ps1 -Quiet pnpm run build
3. Modèle de rapport d'exécution de l'installation
## 🌐 Rapport d'exécution de la configuration i18n Next.js
| Étape / Composant | Fichiers cibles | Statut | Notes |
| :-------------------- | :----------------------------- | :------------------------------ | :----------------------- |
| **Paquet** | `package.json` (`next-intl`) | `[IMPLEMENTED]` / `[UNTOUCHED]` | Runtime installé |
| **Configuration projet** | `docs/project.json` | `[IMPLEMENTED]` / `[UNTOUCHED]` | Répertoire messages configuré |
| **Routage** | `i18n/routing.ts` | `[IMPLEMENTED]` / `[UNTOUCHED]` | Locales et défaut |
| **Requête** | `i18n/request.ts` | `[IMPLEMENTED]` / `[UNTOUCHED]` | next/root-params |
| **Navigation** | `i18n/navigation.ts` | `[IMPLEMENTED]` / `[UNTOUCHED]` | Helpers TypeScript purs |
| **Plugin** | `next.config.ts` | `[IMPLEMENTED]` / `[UNTOUCHED]` | withNextIntl enveloppé |
| **Intercepteur** | `proxy.ts` / `middleware.ts` | `[IMPLEMENTED]` / `[UNTOUCHED]` | Matcher de routes |
| **Dictionnaires** | `messages/[locale].json` | `[IMPLEMENTED]` / `[UNTOUCHED]` | Dictionnaires de démarrage |
| **Mise en page** | `app/[locale]/layout.tsx` | `[IMPLEMENTED]` / `[UNTOUCHED]` | Paramètres statiques & provider |
| **Types** | `global.d.ts` | `[IMPLEMENTED]` / `[UNTOUCHED]` | Augmentation AppConfig |
| **Vérification** | `verify-setup.ps1` & build | `[PASSED]` | Construction propre |