Astroサイトの多言語URL設計とi18n戦略
Decision
- URLはサブディレクトリ・プレフィックス型を採用する。
- Astroのi18n設定で
prefixDefaultLocale: falseを使用する。 - デフォルト言語(ja)はルート直下(例:
/posts/slug)。 - 追加言語(en等)は言語プレフィックス付き(例:
/en/posts/slug)。 - 記事スラッグは言語間で同一のものを使用する。
Context
生成AIや翻訳APIの活用により多言語化を進めるにあたり、以下の要件を満たす必要があった。
- 既存の日本語記事URLを変更せず、SEO評価と被リンクを維持する。
- AstroのFile-based Routingと相性が良く、運用コストが低い構成にする。
- 日本語がオリジナル(Source of Truth)である前提を崩さない。
Options
- Option A(Suffix):
/posts/slug/en- Astro標準のi18nと相性が悪い。
- Option B(Root English):
/を英語、/ja/を日本語- 既存日本語URLの変更が必要。
- Option C(Prefix + JA Default):
/を日本語のまま維持し、英語を/en/- 既存URLを維持しつつ多言語化できる。
Rationale
- 後方互換性の維持: 既存日本語記事のURLをそのまま保てる。
- 実装コストの最小化: Astroの標準i18n設定だけで実現できる。
- 品質と信頼性: オリジナル(日本語)と翻訳版の階層を分けやすい。
Consequences
- ルート(/)にアクセスした海外ユーザーは日本語を見る。
- 必要に応じて、言語提案UIやAccept-Languageに基づくリダイレクトを検討する。
- hreflangと言語間リンクは標準ヘルパーで実装可能。
- 言語間で同一スラッグを維持する運用が必須になる。
hsb.horse