Marketplace internationalizing-websites
Adds multi-language support to Next.js websites with proper SEO configuration including hreflang tags, localized sitemaps, and language-specific content. Use when adding new languages, setting up i18n, optimizing for international SEO, or when user mentions localization, translation, multi-language, or specific languages like Japanese, Korean, Chinese.
git clone https://github.com/aiskillstore/marketplace
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/zhanlincui/internationalizing-websites" ~/.claude/skills/aiskillstore-marketplace-internationalizing-websites && rm -rf "$T"
skills/zhanlincui/internationalizing-websites/SKILL.mdInternationalizing Websites
Complete workflow for adding multi-language support to Next.js websites with SEO best practices.
When to use this Skill
- Adding new language versions to existing website
- Setting up i18n (internationalization) for new website
- Configuring SEO for multiple languages
- User mentions: "add language", "translation", "localization", "hreflang", "multi-language"
Supported Languages
Common target markets:
- 🇺🇸 English (en) - Global market
- 🇯🇵 Japanese (ja) - Asian market
- 🇨🇳 Chinese (zh) - Chinese market
Extended support available for:
- Korean (ko), Portuguese (pt), Spanish (es), French (fr), German (de)
- Arabic (ar), Vietnamese (vi), Hindi (hi), Indonesian (id), Thai (th)
- Traditional Chinese (zh-hk), Italian (it), Russian (ru)
Internationalization Workflow
Copy this checklist and track your progress:
i18n Progress: - [ ] Step 1: Prepare base language files - [ ] Step 2: Add new language files - [ ] Step 3: Update configuration files - [ ] Step 4: Add translations - [ ] Step 5: Configure SEO elements - [ ] Step 6: Validate and test
Step 1: Prepare base language files
Ensure English (
en.json) files exist as templates:
Required directories:
- Main translationsi18n/messages/en.json
- Landing page translationsi18n/pages/landing/en.json
Verify structure:
# Check if base files exist ls i18n/messages/en.json ls i18n/pages/landing/en.json
If missing, create them with complete translation keys for your website.
Step 2: Add new language files
Run the language addition script:
node scripts/i18n-add-languages.mjs
What this script does:
- Copies
to all target language filesen.json - Updates
with new localesi18n/locale.ts - Updates
with language mappingsi18n/request.ts - Updates
with new language URLspublic/sitemap.xml
Script configuration (in
i18n-add-languages.mjs):
array - List of languages to addlanguages
object - Language display nameslanguageNames
array - Directories containing translation filestargetDirs
See WORKFLOW.md for detailed step-by-step guide.
Step 3: Verify configuration updates
Check
:i18n/locale.ts
export const locales = ["en", "ja", "zh", "ko", ...]; export const localeNames: any = { en: "English", ja: "日本語", zh: "中文", ko: "한국어", ... };
Check
:i18n/request.ts
- Language code mappings configured
→zh-CN
,zh
→zh-HK
mappings presentzh-hk
Check
:public/sitemap.xml
- All language versions listed
tags present for each URLhreflang
Step 4: Add translations
Option A: Using AI translation (faster but needs review):
# Add structured data and pricing translations node scripts/i18n-add-schema.js
Configure translations in the script's
translations object.
Option B: Manual translation (recommended for quality):
Edit each language file with proper translations:
# Open language file code i18n/messages/ja.json
Translation best practices:
- Use native speakers when possible
- Maintain SEO keywords in target language
- Adapt content to local culture, don't just translate
- Keep formatting consistent (placeholders, variables)
See reference/locale-codes.md for language code reference.
Step 5: Configure SEO elements
hreflang tags - Automatic via sitemap, but verify:
See reference/hreflang-guide.md for complete guide.
Localized meta tags - Translate in each language file:
{ "metadata": { "title": "Your Site Title", "description": "Your SEO description" } }
URL structure - Verify correct format:
- English:
orhttps://example.com/https://example.com/en/ - Japanese:
https://example.com/ja/ - Chinese:
https://example.com/zh/
Step 6: Validate and test
Build the project:
npm run build
CRITICAL: Fix any errors before proceeding.
Manual testing:
-
Language switcher:
- Visit each language version
- Verify language switcher shows all languages
- Click each language link, verify correct page loads
-
Content display:
- Check all pages render correctly in each language
- Verify no untranslated text (check for English in non-English pages)
- Test special characters display correctly (Japanese, Chinese, Arabic)
-
SEO elements:
- Inspect
attribute matches page language<html lang="..."> - Verify
tags present<link rel="alternate" hreflang="..."> - Check meta tags are in correct language
- Inspect
Automated validation:
# Check sitemap curl https://your-site.com/sitemap.xml | grep hreflang # Validate hreflang (use online tool) # Google Search Console > Internationalization > hreflang
SEO checklist - See reference/seo-checklist.md.
If validation fails:
- Review error messages carefully
- Check configuration files for typos
- Verify language codes are correct
- Return to Step 3 and fix issues
Only proceed when all validations pass.
Important Notes
Language Code Standards
Use ISO 639-1 (two-letter codes) with optional regional variants:
- Englishen
- Japaneseja
- Simplified Chinesezh
- Traditional Chinese (Hong Kong)zh-hk
- Portuguesept
- Brazilian Portuguesept-br
See reference/locale-codes.md for complete list.
SEO Implications
Correct i18n improves SEO by:
- Targeting users in their native language
- Avoiding duplicate content penalties
- Helping search engines serve correct language version
Common SEO mistakes to avoid:
- ❌ Auto-redirect based on IP (prevents search engines from crawling all versions)
- ❌ Missing hreflang tags (causes duplicate content issues)
- ❌ Inconsistent URL structure across languages
- ❌ Untranslated meta tags
Translation Quality
AI translation vs Human translation:
- ✅ AI: Fast, cost-effective, good for initial draft
- ⚠️ AI: May miss cultural nuances, needs review
- ✅ Human: Better quality, cultural adaptation
- ⚠️ Human: Slower, more expensive
Recommended approach:
- Use AI to generate initial translations
- Have native speaker review and refine
- Test with target market users
- Iterate based on feedback
Next.js i18n Routing
The system uses
next-intl for routing:
- Automatic locale detection from URL
- Language switcher component
- Localized navigation
Configuration in
i18n/locale.ts and i18n/request.ts.
Post-Internationalization Tasks
After adding languages:
- Submit updated sitemap to Google Search Console
- Create separate Search Console properties for each language/region
- Monitor international organic traffic in Analytics
- A/B test translations if conversion rates differ by language
- Set up alerts for international crawl errors
Script Locations
All i18n scripts are in the
scripts/ directory:
- Add new language filesi18n-add-languages.mjs
- Add structured data translationsi18n-add-schema.js
Reference Materials
- WORKFLOW.md - Detailed step-by-step workflow
- reference/hreflang-guide.md - hreflang implementation guide
- reference/locale-codes.md - Language codes reference
- reference/seo-checklist.md - International SEO checklist
For troubleshooting, see WORKFLOW.md troubleshooting section.