作成:2026-08-24最終更新:2026-08-24
このドキュメントをあなたの好きなAIアシスタントに参照してくださいChatGPTClaudeDeepSeekGoogle AI modeGeminiPerplexityMistralGrok
このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "ドキュメントの初期化"v9.4.02026/8/24
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを編集
このドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクコピー
ドキュメントのMarkdownをクリップボードにコピー
intlayer Elysia プラグインドキュメント
Elysia 用の intlayer プラグインは、ユーザーのロケールを検出し、ルートコンテキストに intlayer オブジェクトを注入します。また、リクエストコンテキスト内でグローバルな翻訳関数を使用できるようにします。
使用方法
src/index.ts
コードをコピー
コードをクリップボードにコピー
プラグインは グローバル なderiveを通じてコンテキストを登録し、Elysia はそれをPartial<{ intlayer: IntlayerContext }>として型付けします。.use(intlayer())の後に登録されたルートでは実行時に値が必ず存在するため、strictモードの TypeScript を満たすには非 null アサーション(intlayer!.t)またはオプショナルチェーンを使用してください。
同じヘルパーはスタンドアロンのエクスポートとしても利用できるため、ルートコンテキストを分割代入せずに呼び出せます:
src/index.ts
コードをコピー
コードをクリップボードにコピー
説明
プラグインは次のタスクを実行します:
- ロケール検出: クライアントが明示的に設定したロケールをストレージ(クッキー、ヘッダー)から読み取り、その後
Accept-Languageヘッダーからネゴシエートされたロケールにフォールバックします。 - コンテキストへの注入: Elysia のルートコンテキストに
intlayerプロパティを追加します(下記の「ルートコンテキスト」表を参照)。 - コンテキスト管理: 非同期コンテキストを管理するために
AsyncLocalStorageを使用し、グローバルな Intlayer 関数(t、getIntlayer、getDictionary)がコンテキストオブジェクトを渡さずにリクエスト固有のロケールにアクセスできるようにします。 - 辞書の準備: プラグインの生成時に
prepareIntlayerを呼び出すため、アプリの起動時に辞書がビルドされます。
ルートコンテキスト
テーブルのすべての内容を表示
テーブルをモーダルで開き、すべてのデータを明確に表示
| プロパティ | 型 | 説明 |
|---|---|---|
locale | Locale | このリクエストで使用するロケール。locale_storage が locale_detected より優先されます。 |
locale_storage | Locale (任意) | クッキーまたはヘッダーを通じてクライアントが明示的に要求したロケール。 |
locale_detected | Locale | リクエストヘッダーからネゴシエートされたロケール。 |
defaultLocale | Locale | intlayer.config.ts でフォールバックとして設定されたロケール。 |
t | TranslateFunction | 翻訳関数。 |
getIntlayer | typeof getIntlayer | キーで辞書を取得する関数。 |
getDictionary | typeof getDictionary | 辞書オブジェクトを処理する関数。 |
Node ベースの Intlayer プラグインとは異なり、elysia-intlayerはcls-hookedではなくAsyncLocalStorageに依存します。cls-hookedは Bun が実装していないasync_hooks.createHookに依存しているためです。
リクエストコンテキストはレスポンスがマップされた時点で解放されるため、スタンドアロンのヘルパーが既に終了したリクエストに対して解決されることはありません。プラグインが処理するリクエストの外部で呼び出された場合は、設定されたデフォルトロケールにフォールバックします。
ロケールの解決順序
デフォルトでは、プラグインは次の順序でロケールを解決します:
INTLAYER_LOCALEクッキー。x-intlayer-localeヘッダー。Accept-Languageヘッダーのネゴシエーション。- 設定された
defaultLocale。
bash
コードをコピー
コードをクリップボードにコピー
設定
プラグインは intlayer.config.ts ファイルを読み取ります。ロケール検出に使用するクッキーとヘッダーをカスタマイズできます:
intlayer.config.ts
コードをコピー
コードをクリップボードにコピー
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
defaultLocale: Locales.ENGLISH,
},
routing: {
storage: [
{ type: "header", name: "my-locale-header" },
{ type: "cookie", name: "my-locale-cookie" },
],
},
};
export default config;
設定に関する詳細は、設定ドキュメントをご覧ください。
