> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 言語とコピー

アプリクローム、設定ラベル、メール、通知イベント向けの 4 ロケール辞書スケルトンを使う。

## インストールとセットアップ

手順の前に、[始める前に](https://supastack.dev/ja/docs/web/before-you-start.md) と [ターミナルの基本](https://supastack.dev/ja/docs/web/terminal-basics.md) をお読みください。これらの手順では、VS Code で完全な supastack モノリポジトリを開いたことが前提となっています。そのルート package.json はリポジトリのルートをマークします。 pnpm コマンドでは、ワークスペース パッケージはアプリまたは共有コード フォルダーです。この製品では、ワークスペースはチームのデータ コンテナであり、セキュリティ境界です。 corepack pnpm --filter ... コマンドがルートから実行されている間にモノリポジトリから 1 つのパッケージを選択します。同期されたモバイル フォルダーまたはデスクトップ フォルダーのみを開いた場合、そのフォルダーには Web バックエンド、Docker セットアップ、またはルート スクリプトが含まれていません。このモノリポジトリまたはアクセス可能なホスト サーバーからバックエンドを実行し、プラットフォーム フォルダー独自のスクリプトを使用します。環境変数は、ローカルの .env ファイルまたはホスティング ダッシュボードに保存される名前付き設定です。変更後に関連するアプリを再起動し、NEXT_PUBLIC_ および EXPO_PUBLIC_ 値にサーバー シークレットが含まれないようにします。

1. VS Code で packages/i18n/src/index.ts を開き、サポートされている言語名とロケール ヘルパーを確認します。製品コピーを変更する前に、一致する辞書ファイルを見つけてください。

2. 同じ新しいキーと翻訳を英語、ドイツ語、スペイン語、フランス語の辞書に追加します。

3. リポジトリ ルートから corepack pnpm test -- packages/i18n/src/index.test.ts を実行し、corepack pnpm --filter @supastack/web dev で Web を起動します。予期: 言語スイッチャーは、現在のページ パスを維持しながら、表示されるテキストを変更します。

ロケールは、SUPPORTED_LOCALES、LOCALE_COOKIE、resolveLocale、getDictionary、および localePath を使用して @supastack/i18n に存在します。プロキシは x-supastack-locale を設定し、正規の英語リダイレクトを処理します。 LanguageSwitcher は Cookie を更新し、アクティブなサブパスを保持します。主要なアプリ ルート (/dashboard、/settings、/billing、/chat) は、ソフト /{locale} マーケティング ホームと並んで、/[locale] プレフィックスの下で直接機能します。

辞書には、マーケティング ナビゲーション、設定セクション ラベル、組織設定 Chrome、トランザクション メール (invite/OTP/magic-link/AI/billing)、通知設定ラベル、およびアプリ内通知イベント コピーが含まれます。

```
import { getDictionary, resolveLocale, LOCALE_COOKIE } from "@supastack/i18n";

const locale = resolveLocale([
  cookieStore.get(LOCALE_COOKIE)?.value,
  headers.get("x-supastack-locale"),
  headers.get("accept-language"),
]);
const copy = getDictionary(locale);
```


## コピーするコマンド

コメントに従って、コマンドがどのフォルダーで実行されるかを確認します。 2 つのターミナルにラベルが付いている場合は、2 つのターミナル ウィンドウを開き、2 番目のコマンドを使用している間、最初のコマンドを実行し続けます。

```
corepack pnpm test -- packages/i18n/src/index.test.ts
corepack pnpm --filter @supastack/web dev
```


## 実装ワークフロー

サーバーでレンダリングされた設定/組織ページ、および使用可能な場合は notificationCopyForEvent/認証メール配信オプションにロケールを渡します。英語は DEFAULT_LOCALE のままにして、辞書キー以外のマーケティング上の主張をでっち上げないようにしてください。

トランザクションメールはアウトリーチと分離されたままです。すべてのマーケティングルートを [locale] 配下にネストする前に辞書を拡張してください。


## 検証とトラブルシューティング

1 つのフレーズに英語が表示される場合は、そのキーが 4 つの辞書すべてに存在し、ページが同じキーを要求していることを確認してください。言語を切り替えてホームページに戻る場合は、ロケール リンクを構築するときに現在のパスを保存します。電子メールのコピーをトランザクション電子メール パスに保存します。一括アウトリーチとして再利用しないでください。

packages/i18n Vitest、プロキシ テスト、および locale-app-routes テストを実行します。 / の LanguageSwitcher と、ロケール プレフィックスが de/es/fr の場合のローカライズされた Settings/org/dashboard/billing/chat 見出しをスポットチェックします。


## 次へ

[ブログ記事を書く](https://supastack.dev/ja/docs/web/blog-content.md)
