> 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. (triggers: middleware.ts, app/[lang]/**, pages/[locale]/**, messages/*.json, next.config.js, i18n, locale, translation, next-intl, react-intl, next-translate)
curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/nextjs-i18n?format=md"Internationalization (i18n)
Priority: P2 (MEDIUM)
Maintain a single source of truth for locales and ensure SEO-friendly sub-path routing.
Workflow: Add i18n to a Next.js App Router Project
- Install
next-intland createmessages/en.json,messages/fr.json, etc. - Add locale detection middleware in
middleware.ts - Create
app/[lang]/layout.tsxwith locale param - Load translations server-side via
getMessages() - Add
hreflangtags ingenerateMetadata - Pre-render locales with
generateStaticParams - Verify: run
next buildand confirm all locale paths render
Middleware Example
Implementation Guidelines
- Locale Routing: Follow the URL-first approach for SEO. Use dynamic segments in the App Router (
app/[lang]/page.tsx) and thei18nconfiguration innext.config.jsfor the Pages Router. - Library Selection: Use
next-intlfor the App Router (modern) orreact-intl/next-translatefor legacy apps. - Detection: Implement middleware localization in
middleware.tsto detect user language fromAccept-Languageheaders or cookies and perform redirects. - Server-Side: Load translation
messages/*.jsondictionaries in Server Components to keep the client bundle small. - SEO: Ensure
hreflangtags are generated correctly in themetadataAPI for all translated routes. - Static Generation: Use
generateStaticParamsto pre-render localized versions of static pages at build time.
Library Specifics
For detailed setup with common libraries, refer to:
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.
> related_skills --same-repo
> common-store-changelog
Generate user-facing release notes for the Apple App Store and Google Play Store by collecting git history, triaging user-impacting changes, and drafting store-compliant changelogs. Enforces character limits (App Store ≤4000, Google Play ≤500), tone, and bullet format. Use when generating release notes, app store changelog, play store release, what's new, or version release notes for any mobile app. (triggers: generate changelog, app store notes, play store release, what's new, release notes, ve
> golang-tooling
Go developer toolchain — gopls LSP diagnostics, linting, formatting, and vet. Use when setting up Go tooling, running linters, or integrating gopls with Claude Code. (triggers: gopls, golangci-lint, golangci.yml, go vet, goimports, staticcheck, go tooling, go lint)
> common-ui-design
Design distinctive, production-grade frontend UI with bold aesthetic choices. Use when building web components, pages, interfaces, dashboards, or applications in any framework (React, Next.js, Angular, Vue, HTML/CSS). (triggers: build a page, create a component, design a dashboard, landing page, UI for, build a layout, make it look good, improve the design, build UI, create interface, design screen)
> common-owasp
OWASP Top 10 audit checklist for Web Applications (2021) and APIs (2023). Load during any security review, PR review, or codebase audit touching web, mobile backend, or API code. (triggers: security review, OWASP, broken access control, IDOR, BOLA, injection, broken auth, API review, authorization, access control)