Next.js 16 internationalization with next-intl or DIY. Use when implementing i18n, translations, localization, multilingual, language switch, locale routing, or formatters.
Covers [locale]-prefixed routing, localized navigation components (Link, redirect, usePathname, useRouter), date/number/currency/relative-time formatting, RTL language support, SEO hreflang tags, and localized special files ([locale]/error.tsx, [locale]/not-found.tsx, global-error.tsx). This is the Next.js-specific i18n skill (App Router routing, proxy.ts integration) — for plain React apps without Next.js see react-i18n, and for Astro see astro-i18n.
Complete i18n solution with next-intl or DIY dictionary approach.
Before ANY implementation, spawn 3 agents in parallel, one Agent call each with a name:
After implementation, run fuse-ai-pilot:sniper for validation.
[locale] dynamic segment| Feature | Benefit |
|---|---|
| App Router native | Full Server Components support |
| Type-safe messages | TypeScript autocompletion for keys |
| ICU MessageFormat | Pluralization, gender, select expressions |
| Async message loading | Load translations on-demand per locale |
| proxy.ts compatible | Works with Next.js 16 proxy pattern |
| Rich formatting | Dates, numbers, lists, relative time |
Full-featured library with routing, formatting, and type safety. Best for production applications needing comprehensive i18n support.
Lightweight approach using dynamic imports for simple translation needs. Good for projects wanting minimal dependencies.
All i18n code organized in modules/cores/i18n/:
src/modules/cores/i18n/src/config/routing.ts - Locale routing configsrc/modules/cores/i18n/messages/en.json - English translationssrc/modules/cores/i18n/messages/fr.json - French translationsproxy.ts - Locale detection and redirect logicAll routes prefixed with [locale] dynamic segment:
/en/about → English about page/fr/about → French about page/ → Redirects to default localeUse localized navigation from next-intl for automatic locale handling:
| Need | Reference |
|---|---|
| Initial setup | installation.md, routing-setup.md |
| Route config | routing-config.md, middleware-proxy.md |
| Translations | translations.md, messages-validation.md |
| Formatting | formatting.md |
| Components | server-components.md, client-components.md |
| Navigation | navigation.md |
| TypeScript | typescript.md |
| SEO | seo.md |
| Testing | testing.md |
| DIY approach | diy-dictionaries.md, diy-locale-detection.md |
{count, plural, one {# item} other {# items}}{gender, select, male {He} female {She} other {They}}dir attribute for right-to-left languagesLocalized error and loading states require specific handling:
[locale]/error.tsx - Localized error boundary[locale]/not-found.tsx - Localized 404 pageglobal-error.tsx - Root error fallbackSee error-files.md for complete patterns.