Next.js i18n Einrichtung (nextjs-i18n-setup)
Integriere next-intl in ein bestehendes Next.js App Router Projekt mit modernem next/root-params, dynamischem Segment app/[locale]/ und Next.js 16+ (proxy.ts) / Next.js <=15 (middleware.ts).
[!TIP] Boilerplate & Vorlagen: Siehe
references/templates.mdfür vollständige Codevorlagen zum Einfügen beim Erstellen von Dateien. Schnelle Ausführung: Delegiere die Überprüfung an einen leichten Unter-Agenten (Model: 'flash').
1. Architekturregeln & Anforderungen
- Metadaten-Vertrag: Stelle sicher, dass
docs/project.jsonFolgendes enthält:"dictionaries_dir": "messages", "dictionary_file_pattern": "[locale].json" - Next.js Versions-Interceptor:
- Next.js 16+: Verwende
proxy.ts(odersrc/proxy.ts). Migriere und entferne die altemiddleware.ts. - Next.js <=15: Verwende
middleware.ts(odersrc/middleware.ts).
- Next.js 16+: Verwende
- Moderne Root-Parameter: Verwende
next/root-params(await rootParams.locale()) ini18n/request.ts. Die veraltetenrequestLocaleundsetRequestLocale()sind nicht erlaubt. - Navigation: Exportiere
Link,redirect,usePathname,useRouterausi18n/navigation.ts(reines TypeScript, kein JSX). - Statische Generierung: Das Root-Layout
app/[locale]/layout.tsxMUSSgenerateStaticParams()exportieren, das{ locale }für alle unterstützten Sprachen zurückgibt.
2. Einrichtungs-Checkliste
- Schritt 0: Prüfung: Überprüfe
docs/project.json(supported_languages) und die Next.js-Version inpackage.json. - Schritt 1: Installation: Führe
<pkg_mgr> add next-intlaus (z.B.pnpm add next-intl). - Schritt 2: Konfigurations-Metadaten: Stelle sicher, dass
dictionaries_dir: "messages"indocs/project.jsongesetzt ist. - Schritt 3: Routing: Erstelle
i18n/routing.tsmitdefineRouting(siehe Vorlagen). - Schritt 4: Request-Handler: Erstelle
i18n/request.tsmitnext/root-params(siehe Vorlagen). - Schritt 5: Navigationshilfen: Erstelle
i18n/navigation.ts(siehe Vorlagen). - Schritt 6: Next-Plugin: Umwickle
next.config.tsmitcreateNextIntlPlugin()(siehe Vorlagen). - Schritt 7: Interceptor: Erstelle
proxy.ts(Next 16+) odermiddleware.ts(Next <=15) mit einem Asset-Filter-Matcher (siehe Vorlagen). - Schritt 8: Starter-Wörterbücher: Stelle sicher, dass
messages/[locale].jsonfür alle unterstützten Sprachen existiert und übereinstimmende Basisschlüssel enthält. - Schritt 9: Layout & Routen migrieren: Verschiebe die Top-Level-Routen nach
app/[locale]/. Konfiguriere dynamischedir,lang,generateStaticParamsund<NextIntlClientProvider>(siehe Vorlagen). - Schritt 10: Typ-Erweiterung: Deklariere
AppConfig.Messagesinglobal.d.ts(siehe Vorlagen). - Schritt 11: Navigations-Imports: Aktualisiere interne Links in bestehenden Komponenten, um
@/i18n/navigationzu verwenden. - Schritt 12: Überprüfung: Führe das Verifikationsskript und den Build aus:
pwsh .agents/skills/nextjs-i18n-setup/scripts/verify-setup.ps1 -Quiet pnpm run build
3. Vorlage für den Einrichtungsausführungsbericht
## 🌐 Next.js i18n Einrichtungsausführungsbericht
| Schritt / Komponente | Zielfile(s) | Status | Anmerkungen |
| :------------------- | :---------------------------- | :------------------------------ | :----------------------- |
| **Paket** | `package.json` (`next-intl`) | `[IMPLEMENTIERT]` / `[UNVERÄNDERT]` | Installierte Laufzeit |
| **Projektkonfig** | `docs/project.json` | `[IMPLEMENTIERT]` / `[UNVERÄNDERT]` | Konfiguriertes Nachrichtenverzeichnis |
| **Routing** | `i18n/routing.ts` | `[IMPLEMENTIERT]` / `[UNVERÄNDERT]` | Sprachen & Standard |
| **Request** | `i18n/request.ts` | `[IMPLEMENTIERT]` / `[UNVERÄNDERT]` | next/root-params |
| **Navigation** | `i18n/navigation.ts` | `[IMPLEMENTIERT]` / `[UNVERÄNDERT]` | Reine TS-Hilfsfunktionen |
| **Plugin** | `next.config.ts` | `[IMPLEMENTIERT]` / `[UNVERÄNDERT]` | withNextIntl umwickelt |
| **Interceptor** | `proxy.ts` / `middleware.ts` | `[IMPLEMENTIERT]` / `[UNVERÄNDERT]`| Routen-Matcher |
| **Wörterbücher** | `messages/[locale].json` | `[IMPLEMENTIERT]` / `[UNVERÄNDERT]` | Starter-Wörterbücher |
| **Layout** | `app/[locale]/layout.tsx` | `[IMPLEMENTIERT]` / `[UNVERÄNDERT]` | Statische Parameter & Anbieter |
| **Typen** | `global.d.ts` | `[IMPLEMENTIERT]` / `[UNVERÄNDERT]` | AppConfig-Erweiterung |
| **Verifizierung** | `verify-setup.ps1` & Build | `[BESTANDEN]` | Sauberer Build |