Fumadocs Internationalization Setup
Automate the complete setup of internationalization (i18n) in a Fumadocs project with language routing, switcher UI, and proper content organization.
When to Use This Skill
Use this skill when:
- Setting up a new Fumadocs project with multi-language support
- Adding i18n to an existing Fumadocs project
- The user mentions: "add multi-language", "internationalization", "i18n", "translate docs"
- They want language-specific sidebars and navigation
- They need a language switcher in the UI
Prerequisites
Before using this skill, verify:
- Fumadocs project is initialized (with
fumadocs-core,fumadocs-ui,fumadocs-mdx) - Next.js App Router is being used
- Project has the following structure:
app/ ├── layout.tsx ├── (home)/ └── docs/ content/docs/ lib/
What This Skill Does
This skill will automatically:
- Create i18n Configuration (
lib/i18n.ts)
- Define supported languages - Set default language - Configure directory parser
- Set Up Middleware (
middleware.ts)
- Auto-redirect to appropriate locale - Handle language detection
- Restructure App Directory
- Move routes under [lang] dynamic segment - Update all layouts for i18n support
- Configure Language Switcher
- Add language toggle to navigation - Set up display names and translations
- Organize Content by Language
- Structure content/docs/ with language directories - Ensure sidebar only shows current language
- Update All Configurations
- Modify source.ts for i18n - Update layout.shared.tsx to pass locale - Configure page trees per language
Supported Languages
Default configuration includes:
- English (en) - Default language
- Chinese (zh) - Simplified Chinese
- French (fr)
- Korean (ko)
You can customize this list based on user requirements.
Workflow
See the detailed README.md for step-by-step implementation guide.
Key Features
✅ Official fumadocs Approach - Follows fumadocs.dev documentation exactly ✅ Language Switcher - Beautiful dropdown in navigation bar ✅ Filtered Sidebar - Only shows content for current language ✅ SEO-Friendly URLs - Clean /[lang]/docs structure ✅ Automatic Detection - Middleware handles language routing ✅ Type-Safe - Full TypeScript support
Common Issues Solved
This skill addresses common fumadocs i18n pitfalls:
- ❌ Sidebar showing all languages → ✅ Filtered by
source.pageTree[lang] - ❌ Missing language switcher → ✅ Auto-configured in DocsLayout
- ❌ Wrong URL structure → ✅ Correct
/[lang]/docsrouting - ❌ Content not organized → ✅ Proper
en/,zh/, etc. directories - ❌ Parser errors → ✅
parser: 'dir'configuration
Files Created/Modified
The skill will create or modify:
lib/i18n.ts← Newmiddleware.ts← Newapp/layout.tsx← Modifiedapp/[lang]/layout.tsx← Newapp/[lang]/(home)/layout.tsx← Movedapp/[lang]/docs/layout.tsx← Movedapp/[lang]/docs/[[...slug]]/page.tsx← Movedlib/source.ts← Modifiedlib/layout.shared.tsx← Modifiedcontent/docs/[lang]/← New structure
Success Criteria
After running this skill, the user should have:
- ✅ Language switcher visible in top-right navigation
- ✅ URLs like
/en/docs,/zh/docs,/fr/docs,/ko/docs - ✅ Sidebar showing only current language content
- ✅ Middleware redirecting root
/to default language - ✅ All content properly organized in language directories
- ✅ Build succeeds without errors
- ✅ Development server runs correctly
Version History
- v1.0.0 (2025-11-16): Initial release
- Complete i18n setup automation - Language switcher integration - Sidebar filtering by language - Content reorganization - Official fumadocs best practices