多言語対応(多言語ディレクトリ構造)

Methanol は、ディレクトリ内の index.mdxlang プロパティが設定されている場合、そのディレクトリを独立した言語エントリとして識別します。これにより、複雑な i18n システムを導入することなく、ディレクトリ構造に基づいた軽量な多言語化を実現できます。

動作の仕組み

ディレクトリ構成の例:

pages/
  index.mdx          # デフォルト言語のルート
  zh/
    index.mdx        # 中国語の言語ルート
    guide.mdx
  ja/
    index.mdx        # 日本語の言語ルート
    guide.mdx

フロントマターの設定例:

---
title: 日本語
lang: 日本語
langCode: ja
isRoot: true
hidden: true
---

言語スイッチャーの統合

デフォルトテーマは、lang プロパティを持つインデックスページを検出すると、自動的に言語スイッチャーを表示します。

ナビゲーションのスコープ設定

各言語のディレクトリにおいて isRoot: true を設定することで、サイドバーのナビゲーション範囲をその言語ディレクトリ内に限定することが可能です。

注意: isRoot が設定されたページはデフォルトで非表示となります。メニューに表示させたい場合は hidden: false を明示的に設定してください。

この設定により、言語ごとに完全に独立したナビゲーションツリーを構築できます。

ctx.languages のデータ構造

ctx.languages は、検知されたすべての言語エントリを格納した配列です。リンクを生成する際は、site.base が考慮された routeHref を使用してください。

{
	routePath: '/ja/',
	routeHref: '/ja/',
	label: '日本語',
	code: 'ja'
}

ルートパス(/)の index.mdxlang が設定されている場合、そのエントリもリストに含まれます。

実装のアドバイス