
MDX におけるローカライズされたフォーマットと複数形
#i18n
#mdx
#pluralization
2025年12月1日
この例では、EdgeKits Core の Zero-JS i18n アーキテクチャを使った場合に、MDX の中で 補間・複数形ルール・実行時フォーマット がどのように機能するかを示します。
前回のデモはインタラクティブなコンポーネントにフォーカスしていましたが、今回は 動的なテキスト が、数値や UI の状態が変化しても、どのように Cloudflare KV から直接取得されるかを示します。
ローカライズされたテキスト付きの動的カウンター
下にはシンプルなカウンターを公開する React Island があります。 このコンポーネント自体には 英語の文字列は一切含まれていません。すべてのラベルは KV から取得されます。
- 単数形と複数形(
1 item→5 items) - 補間された値(
{count}) - アクティブなロケールに基づくローカライズされた表現
英語とドイツ語を切り替えて、複数形の扱いが自動的に変わる様子を確認してみてください。
Counter demo
0
0 items
これが重要な理由
従来のクライアントサイド i18n では、次のようなことが必要になります。
- JSON の辞書をブラウザに配信する
- フォーマッティングエンジンをバンドルに含める
- 複数形ルールを手動で配線する
- React 内でロケール状態を更新する
EdgeKits Core を使う場合:
- Astro が Edge 上で正しい翻訳を読み込みます。
- 複数形と補間のロジックは、ハイドレーション前に サーバー側 で実行されます。
- React Island は 事前にフォーマットされた型安全なテキスト を受け取ります。
- クライアント側の i18n ライブラリは不要で、配信されるのは 0 KB です。
実運用でのユースケース
このパターンが特に有効なのは、次のようなケースです。
- 価格や数量を扱う UI ウィジェット
- ローカライズされたラベルが必要なダッシュボード
- インタラクティブなデモを埋め込んだ MDX ドキュメント
- 動的なバリデーションメッセージを持つフォーム
- テキストが数値や状態に依存するあらゆるコンポーネント
翻訳は KV に保存されているため、コンテンツ制作者は、コンポーネントコードに触れることなく文言を管理できます。複雑な複数形ロジックや数値フォーマットを含む場合でも同様です。