i18n
Internationalization - localization, translations. Use when adding languages.
When & Why to Use This Skill
This Claude skill provides a comprehensive framework for implementing internationalization (i18n) and localization in Next.js applications using next-intl. It automates the management of translation bundles, enforces strict architectural standards for namespace splitting, and optimizes SEO through intelligent routing and server-side rendering strategies to ensure a native user experience across all markets.
Use Cases
- Case 1: Seamlessly adding new language support to a Next.js project while adhering to next-intl best practices and Turbopack compatibility.
- Case 2: Refactoring hardcoded UI strings into localized, namespace-split translation files to improve code maintainability and reduce client-side bundle sizes.
- Case 3: Configuring SEO-optimized URL structures by implementing permanent redirects and removing unnecessary language prefixes for default locales.
- Case 4: Ensuring application performance and security by preventing server-only translation keys from being exposed in client-side bundles.
| name | i18n |
|---|---|
| description | Internationalization - localization, translations. Use when adding languages. |
i18n Guideline
Tech Stack
- i18n: next-intl
- Framework: Next.js (with Turbopack)
Non-Negotiables
- All i18n via next-intl (no custom implementation)
/en/*must not exist (permanently redirect to non-prefixed)- Missing translation keys must fail build
- No hardcoded user-facing strings outside localization
- Translation bundles must be split by namespace (no monolithic files)
- Server Components for translations wherever possible
- Client bundles must not include server-only translations
Context
Internationalization isn't just translation — it's making the product feel native to each market. Bad i18n signals users are second-class citizens. Good i18n is invisible.
next-intl is the SSOT for i18n. No custom implementations.
Driving Questions
- Is next-intl handling all translations?
- Are bundles split by namespace?
- What would make the product feel native to non-English users?
- Where do translations feel awkward?
- How large are client-side translation bundles?