このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "履歴の初期化"v5.5.102025/6/29
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
ドキュメント: hono-intlayer における t 関数
hono-intlayer パッケージの t 関数は、Hono アプリケーションでローカライズされたレスポンスを提供するためのコア ユーティリティです。ユーザーの優先言語に基づいてコンテンツを動的に選択することで、国際化 (i18n) を簡素化します。
概要
t 関数は、特定の言語セットに対する翻訳を定義し、取得するために使用されます。Accept-Language ヘッダーなどのクライアントのリクエスト設定に基づいて、返すべき適切な言語を自動的に決定します。優先言語が利用できない場合は、設定で指定されたデフォルトのロケールに適切にフォールバックします。
主な機能
- 動的なローカリゼーション: クライアントにとって最も適切な翻訳を自動的に選択します。
- デフォルト ロケールへのフォールバック: クライアントの優先言語が利用できない場合、デフォルトのロケールにフォールバックし、ユーザー エクスペリエンスの継続性を確保します。
- 軽量で高速: 高パフォーマンスなアプリケーション向けに設計されており、オーバーヘッドを最小限に抑えます。
- 厳格モードのサポート: 信頼性の高い動作のために、宣言されたロケールの厳守を強制します。
関数のシグネチャ
コードをクリップボードにコピー
t(translations: Record<string, string>): string;パラメータ
translations: キーがロケール コード (例:en、fr、ja) で、値が対応する翻訳文字列であるオブジェクト。
戻り値
- クライアントの優先言語でのコンテンツを表す文字列。
国際化リクエスト ハンドラのロード
hono-intlayer が提供する国際化機能が正しく動作するようにするには、Hono アプリケーションの最初に国際化ミドルウェアをロードする必要があります。これにより t 関数が有効になり、ロケール検出と翻訳が適切に処理されます。
アプリケーションのすべてのルートの前に app.use("*", intlayer()) ミドルウェアを配置し、すべてのルートが国際化の恩恵を受けられるようにしてください。
コードをクリップボードにコピー
import { Hono } from "hono";
import { intlayer } from "hono-intlayer";
const app = new Hono();
// 国際化リクエスト ハンドラをロード
app.use("*", intlayer());
// ミドルウェアのロード後にルートを定義
app.get("/", (c) => {
return c.text(
t({
en: "Hello, World!",
fr: "Bonjour le monde!",
es: "¡Hola, Mundo!",
ja: "こんにちは、世界!",
})
);
});これが必要な理由
- ロケール検出:
intlayerミドルウェアは、ヘッダー、クッキー、またはその他の構成された方法に基づいてユーザーの優先ロケールを検出するために、着信リクエストを処理します。 - 翻訳コンテキスト:
t関数が正しく動作するために必要なコンテキストを設定し、翻訳が正しい言語で返されるようにします。 - エラー防止: このミドルウェアがないと、必要なロケール情報が利用できないため、
t関数を使用するとランタイム エラーが発生します。
使用例
基本的な例
異なる言語でローカライズされたコンテンツを提供します。
コードをクリップボードにコピー
app.get("/", (c) => { return c.text( t({ en: "Welcome!", fr: "Bienvenue!", ja: "ようこそ!", }) );});クライアント リクエスト:
Accept-Language: frのクライアントはBienvenue!を受け取ります。Accept-Language: jaのクライアントはようこそ!を受け取ります。Accept-Language: deのクライアントはWelcome!(デフォルト ロケール) を受け取ります。
エラー処理
複数の言語でエラー メッセージを提供します。
コードをクリップボードにコピー
app.get("/error", (c) => { return c.text( t({ en: "An unexpected error occurred.", fr: "Une erreur inattendue s'est produite.", ja: "予期しないエラーが発生しました。", }), 500 );});ロケール バリアントの使用
ロケール固有のバリアントに対する翻訳を指定します。
コードをクリップボードにコピー
app.get("/greet", (c) => { return c.text( t({ en: "Hello!", "en-GB": "Hello, mate!", fr: "Bonjour!", ja: "こんにちは!", }) );});高度なトピック
フォールバック メカニズム
優先ロケールが利用できない場合、t 関数は設定で定義されたデフォルト ロケールにフォールバックします。
コードをクリップボードにコピー
import { Locales, type IntlayerConfig } from "intlayer";const config = { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.JAPANESE], defaultLocale: Locales.ENGLISH, },} satisfies IntlayerConfig;export default config;厳格モードの強制
宣言されたロケールの厳守を強制するように t 関数を構成します。
テーブルをモーダルで開き、すべてのデータを明確に表示
| モード | 動作 |
|---|---|
strict | 宣言されたすべてのロケールに翻訳を提供する必要があります。不足している場合はエラーをスローします。 |
inclusive | 宣言されたロケールには翻訳が必要です。不足している場合は警告を発しますが、受け入れられます。 |
loose | 宣言されていなくても、既存のロケールはすべて受け入れられます。 |
TypeScript の統合
TypeScript と一緒に使用すると、t 関数は型安全になります。型安全な翻訳オブジェクトを定義します。
コードをクリップボードにコピー
import { type LanguageContent } from "hono-intlayer";const translations: LanguageContent<string> = { en: "Good morning!", fr: "Bonjour!", ja: "おはようございます!",};app.get("/morning", (c) => { return c.text(t(translations));});よくあるエラーとトラブルシューティング
テーブルをモーダルで開き、すべてのデータを明確に表示
| 問題 | 原因 | 解決策 |
|---|---|---|
t 関数が動作しない | ミドルウェアがロードされていない | ルートの前に app.use("*", intlayer()) が追加されていることを確認してください。 |
| 翻訳不足エラー | すべてのロケールなしで厳格モードが有効 | 必要なすべての翻訳を提供してください。 |
結論
t 関数は、バックエンドの国際化のための強力なツールです。これを効果的に使用することで、グローバルな視聴者にとってより包括的でユーザーフレンドリーなアプリケーションを作成できます。高度な使用法と詳細な構成オプションについては、ドキュメントを参照してください。