For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ja/docs/modules/i18n.md (or send Accept: text/markdown).
i18n モジュール
すべての面が共有するロケール契約。
始める前に
[ファイル] → [フォルダーを開く] を使用して、Visual Studio Code でダウンロードした supastack プロジェクトを開き、[ターミナル] → [新しいターミナル] を選択します。リポジトリ ルートは、package.json、アプリ、およびパッケージを含むフォルダーです。そこで以下のコマンドを実行し、ターミナルを開いたままにしておきます。コマンドが認識されない場合は、続行する前にツールのインストール ガイドを完了してください。
まずプラットフォームのチュートリアルをお読みください。サーバーは、ブラウザまたは電話のリクエストに応答するアプリ プロセスです。 Web は apps/web/.env.local を読み取り、Expo は apps/mobile/.env.local を読み取り、データベース移行コマンドは root .env を読み取ります。データベースなしの /dashboard デモは、Postgres の移行が必要な実際の /auth アカウントとは別のものです。電話またはデスクトップのみのチェックアウトには、別途実行される Web バックエンドが必要です。
corepack pnpm --filter @supastack/web devインストールとセットアップ
packages/i18n はロケール集合と解決契約を所有します:SUPPORTED_LOCALES、DEFAULT_LOCALE、LOCALE_COOKIE、isAppLocale、resolveLocale、localePath、getDictionary。Web ルート、モバイル文字列、トランザクショナルメールはすべて同じパッケージを通って読みます。
解決順はパスプレフィックス → Cookie → Accept-Language → 既定です。localePath(locale, path) は正規の href を生成します——既定ロケールはプレフィックスなし、それ以外は /{locale}/…——そしてプロキシ層がそれを強制します。
import { getDictionary, localePath, resolveLocale } from "@supastack/i18n";
const locale = resolveLocale([pathLocale, cookie, acceptLanguage]);
const copy = getDictionary(locale).marketing;実装ワークフロー
ユーザー向け文字列はまず辞書型に追加し、次に全ロケールへ追加してください——翻訳完全性スイートはキー欠落と未翻訳の英語で失敗します。
ロケールでプロダクトロジックを分岐させないでください;辞書はプレゼンテーションです。日付・数値・複数形は文字列テンプレートではなく、解決されたロケールで Intl API を通してフォーマットします。
検証とトラブルシューティング
キーを触った後は i18n パッケージのテストと site-content 完全性スイートを実行します。ロケールプレフィックス付きルート、言語スイッチャー、Cookie を消した状態での Accept-Language 検出をスポットチェックしてください。