コンテンツへスキップ
supastack
ドキュメントを閲覧
WebTanStack Start

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 検出をスポットチェックしてください。