# SEO Implementation for Multilingual Documentation
**Date:** 2025-10-12
**Status:** ✅ Complete
## Overview
This document outlines the SEO implementation for the Metaplex Developer Hub's multilingual documentation, following international best practices for language-specific content.
## Changes Made
### 1. Language Code Standardization
Updated from custom codes to ISO 639-1 standard:
| Old Code | New Code | Language | Reason |
|----------|----------|----------|--------|
| `/jp/` | `/ja/` | Japanese | ISO 639-1 standard for Japanese |
| `/kr/` | `/ko/` | Korean | ISO 639-1 standard for Korean |
**Why This Matters:**
- hreflang tags require ISO 639-1 language codes
- Improves international SEO
- Aligns with web standards
- Prevents confusion with search engines
### 2. New SEO Components
#### Language Configuration (`src/config/languages.js`)
Central configuration for all language settings:
- ISO 639-1 language codes
- URL path mappings
- Native language names
- Helper functions for path generation
#### SEOHead Component (`src/components/SEOHead.jsx`)
Comprehensive SEO meta tags including:
- **Title and Description**: Translated for each language
- **Canonical URLs**: Self-referential (each language version points to itself)
- **hreflang Tags**: Proper alternate language links
- **Open Graph**: Language-aware OG tags with locale alternates
- **Twitter Card**: Complete social media meta tags
### 3. File Migrations
#### Directories Renamed
- `/src/pages/jp/` → `/src/pages/ja/` (437 files)
- `/src/pages/kr/` → `/src/pages/ko/` (437 files)
#### Locale Files Renamed
- `/src/locales/jp.json` → `/src/locales/ja.json`
- `/src/locales/kr.json` → `/src/locales/ko.json`
### 4. Configuration Updates
#### Updated Files
1. **`src/contexts/LocaleContext.js`**
- Changed locale detection from `jp`/`kr` to `ja`/`ko`
- Updated import paths for locale JSON files
2. **`src/components/LanguageSwitcher.jsx`**
- Updated language codes to `ja` and `ko`
- Updated path detection logic
3. **`src/shared/localizedSections.js`**
- Changed translation keys from `jp`/`kr` to `ja`/`ko`
4. **`src/shared/productTranslations.js`**
- Added Korean (`ko`) translations
- Changed Japanese key from `jp` to `ja`
5. **`src/i18n.js`**
- Updated locale array: `['en', 'ja', 'ko']`
6. **`src/pages/_app.jsx`**
- Replaced custom Head implementation with new SEOHead component
- Now automatically generates all SEO tags
## SEO Features Implemented
### ✅ Canonical URLs
Each language version has a self-referential canonical URL:
- English: `https://developers.metaplex.com/page`
- Japanese: `https://developers.metaplex.com/ja/page`
- Korean: `https://developers.metaplex.com/ko/page`
### ✅ hreflang Tags
Every page includes alternate language links:
```html
```
### ✅ Open Graph Localization
- `og:locale` set to proper format (e.g., `ja_JP`, `ko_KR`)
- `og:locale:alternate` tags for other languages
- Prevents duplicate content issues
### ✅ Translated Meta Tags
- Page titles translated in frontmatter
- Meta descriptions translated
- All social media cards properly localized
## URL Structure
### Final URL Pattern
- **English (default):** `developers.metaplex.com/[page]`
- **Japanese:** `developers.metaplex.com/ja/[page]`
- **Korean:** `developers.metaplex.com/ko/[page]`
### Example Pages
| English | Japanese | Korean |
|---------|----------|--------|
| `/core` | `/ja/core` | `/ko/core` |
| `/candy-machine` | `/ja/candy-machine` | `/ko/candy-machine` |
| `/umi` | `/ja/umi` | `/ko/umi` |
## Adding New Languages
To add a new language in the future:
1. **Update Language Config** (`src/config/languages.js`):
```js
es: {
code: 'es', // ISO 639-1 code
urlPath: '/es', // URL prefix
name: 'Spanish',
nativeName: 'Español',
isDefault: false,
}
```
2. **Create Locale File**: `/src/locales/es.json`
3. **Update i18n Config** (`src/i18n.js`):
```js
const locales = ['en', 'ja', 'ko', 'es'];
```
4. **Add Translations** to:
- `src/shared/localizedSections.js`
- `src/shared/productTranslations.js`
5. **Create Pages Directory**: `/src/pages/es/`
The SEO system will automatically:
- Generate hreflang tags
- Create canonical URLs
- Add Open Graph locale tags
- Handle language switching
## Testing SEO
### Verify Implementation
1. **Check hreflang tags**: View page source and look for `