Skip to content
Development
Skill

/nextjs-i18n

Best practices for multi-language handling, locale routing, and detection strategies across App and Pages Router. Use when adding i18n, locale routing, or language detection in Next.js.

From plugin
agent-skills-standard
538200 skills1 MCP
Install
$ npx -y skills add hoangnguyen0403/agent-skills-standard --skill nextjs-i18n --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/nextjs-i18n

Context preview

The summary Claude sees to decide when to auto-load this skill.

Best practices for multi-language handling, locale routing, and detection strategies across App and Pages Router. Use when adding i18n, locale routing, or language detection in Next.js.

SKILL.md

nextjs-i18n.SKILL.md
name: nextjs-i18n
description: Best practices for multi-language handling, locale routing, and detection strategies across App and Pages Router. Use when adding i18n, locale routing, or language detection in Next.js.
metadata:
  triggers:
    files:
    - 'middleware.ts'
    - 'app/[lang]/**'
    - 'pages/[locale]/**'
    - 'messages/*.json'
    - 'next.config.js'
    keywords:
    - i18n
    - locale
    - translation
    - next-intl
    - react-intl
    - next-translate

Internationalization (i18n)

**Priority: P2 (MEDIUM)**

Maintain single source of truth for locales and ensure SEO-friendly sub-path routing.

Workflow: Add i18n to Next.js App Router Project

1. Install `next-intl` and create `messages/en.json`, `messages/fr.json`, etc. 2. Add locale detection middleware in `middleware.ts` 3. Create `app/[lang]/layout.tsx` with locale param 4. Load translations server-side via `getMessages()` 5. Add `hreflang` tags in `generateMetadata` 6. Pre-render locales with `generateStaticParams` 7. Verify: run `next build` and confirm all locale paths render

Middleware Example

See [implementation examples](references/implementation.md)

Implementation Guidelines

  • **Locale Routing**: Follow URL-first approach for SEO. Use dynamic segments in App Router (`app/[lang]/page.tsx`) and `i18n` configuration in `next.config.js` for Pages Router.
  • **Library Selection**: Use `next-intl` for App Router (modern) or `react-intl` / `next-translate` for legacy apps.
  • **Detection**: Implement middleware localization in `middleware.ts` to detect user language from `Accept-Language` headers or cookies and perform redirects.
  • **Server-Side**: Load translation `messages/*.json` dictionaries in Server Components to keep client bundle small.
  • **SEO**: Ensure `hreflang` tags generated correctly in `metadata` API for all translated routes.
  • **Static Generation**: Use `generateStaticParams` to pre-render localized versions of static pages at build time.

Library Specifics

For detailed setup with common libraries, refer to:

  • [references/react-intl.md](references/react-intl.md)
  • [references/next-intl.md](references/next-intl.md)

Anti-Patterns

  • **No hardcoded strings in JSX**: Use translation keys; never commit raw text.
  • **No client-side translation bundles**: Load dictionaries server-side with `getMessages()`.
  • **No mixed URL locale patterns**: Use sub-paths or domains consistently.

Canonical response anchors

When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:

  • consistent
Read more
Ships withagent-skills-standard

The portable SDLC standards layer for AI coding agents. Sync once, then work in your own runtime.

Get the whole plugin

Other skills on agent-skills-standard.