このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "Solid の useIntlayer API の使用法を直接プロパティアクセスに更新"v8.9.02026/5/4
- "initコマンドの追加"v7.6.02025/12/31
- "履歴の初期化"v7.6.02025/12/31
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
Intlayerを使用したFastifyバックエンドウェブサイトの翻訳 | 国際化 (i18n)
fastify-intlayerは、Fastifyアプリケーション向けの強力な国際化(i18n)プラグインです。クライアントの好みに基づいてローカライズされたレスポンスを提供することで、バックエンドサービスをグローバルにアクセス可能にするよう設計されています。
GitHubでパッケージの実装を確認する: https://github.com/aymericzip/intlayer/tree/main/packages/fastify-intlayer
実用的なユースケース
- ユーザーの言語でバックエンドエラーを表示する: エラーが発生した際、ユーザーの母国語でメッセージを表示することで、理解を深め、フラストレーションを軽減します。これは、トーストやモーダルなどのフロントエンドコンポーネントに表示される動的なエラーメッセージに特に有用です。
- 多言語コンテンツの取得: データベースからコンテンツを取得するアプリケーションの場合、国際化によって複数の言語でコンテンツを提供できるようになります。これは、ユーザーの好みの言語で商品説明や記事などを表示する必要があるECサイトやコンテンツ管理システムなどのプラットフォームにとって極めて重要です。
- 多言語メールの送信: トランザクションメール、マーケティングキャンペーン、通知など、受信者の言語でメールを送信することで、エンゲージメントと効果を大幅に高めることができます。
- 多言語プッシュ通知: モバイルアプリケーションの場合、ユーザーの好みの言語でプッシュ通知を送信することで、インタラクションと継続率を向上させることができます。このパーソナライズされたアプローチにより、通知がより関連性が高く、実行可能なものと感じられるようになります。
- その他のコミュニケーション: SMSメッセージ、システムアラート、ユーザーインターフェースの更新など、バックエンドからのあらゆる形式のコミュニケーションは、ユーザーの言語に対応することで、明快さを確保し、全体的なユーザーエクスペリエンスを向上させることができます。
バックエンドを国際化することで、アプリケーションは文化的な違いを尊重するだけでなく、グローバル市場のニーズにより適合するようになり、サービスを世界規模で拡張するための重要なステップとなります。
はじめに
GitHubでアプリケーションテンプレートを確認してください。
インストール
fastify-intlayerの使用を開始するには、npmを使用してパッケージをインストールします。
コードをクリップボードにコピー
--interactiveフラグはオプションです。AI エージェントの場合はintlayer-cli initを使用してください。
このコマンドは環境を検出し、必要なパッケージをインストールします。例えば:
コードをクリップボードにコピー
設定
プロジェクトのルートにintlayer.config.tsを作成して、国際化設定を構成します。
コードをクリップボードにコピー
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [
Locales.ENGLISH,
Locales.FRENCH,
Locales.SPANISH_MEXICO,
Locales.SPANISH_SPAIN,
],
defaultLocale: Locales.ENGLISH,
},
};
export default config;
コンテンツの宣言
翻訳を保存するためのコンテンツ宣言を作成および管理します。
コードをクリップボードにコピー
import { t, type Dictionary } from "intlayer";
const indexContent = {
key: "index",
content: {
exampleOfContent: t({
en: "Example of returned content in English",
fr: "Exemple de contenu renvoyé en français",
"es-ES": "Ejemplo de contenido devuelto en español (España)",
"es-MX": "Ejemplo de contenido devuelto en español (México)",
}),
},
} satisfies Dictionary;
export default indexContent;
コンテンツ宣言は、contentDirディレクトリ(デフォルトでは./src)に含まれている限り、アプリケーション内のどこにでも定義できます。また、コンテンツ宣言のファイル拡張子(デフォルトでは.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml})と一致している必要があります。
詳細については、コンテンツ宣言のドキュメントを参照してください。
Fastifyアプリケーションの設定
fastify-intlayerを使用するようにFastifyアプリケーションを設定します。
コードをクリップボードにコピー
import Fastify from "fastify";
import { intlayer, t, getDictionary, getIntlayer } from "fastify-intlayer";
import dictionaryExample from "./index.content";
const fastify = Fastify({ logger: true });
// 国際化プラグインのロード
await fastify.register(intlayer);
// ルート
fastify.get("/t_example", async (_req, reply) => {
return t({
en: "Example of returned content in English",
fr: "Exemple de contenu renvoyé en français",
"es-ES": "Ejemplo de contenido devuelto en español (España)",
"es-MX": "Ejemplo de contenido devuelto en español (México)",
});
});
fastify.get("/getIntlayer_example", async (_req, reply) => {
return getIntlayer("index").exampleOfContent;
});
fastify.get("/getDictionary_example", async (_req, reply) => {
return getDictionary(dictionaryExample).exampleOfContent;
});
// サーバーの起動
const start = async () => {
try {
await fastify.listen({ port: 3000 });
} catch (err) {
fastify.log.error(err);
process.exit(1);
}
};
start();
互換性
fastify-intlayerは、以下と完全に互換性があります。
- Reactアプリケーション用
react-intlayer - Next.jsアプリケーション用
next-intlayer - Viteアプリケーション用
vite-intlayer
また、ブラウザやAPIリクエストなど、さまざまな環境におけるあらゆる国際化ソリューションとシームレスに連携します。ミドルウェアをカスタマイズして、ヘッダーまたはCookieを介してロケールを検出することもできます。
コードをクリップボードにコピー
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
// ... その他の設定オプション
routing: {
storage: [
{ type: "header", name: "my-locale-header" },
{ type: "cookie", name: "my-locale-cookie" },
],
},
};
export default config;
デフォルトでは、fastify-intlayerはAccept-Languageヘッダーを解釈して、クライアントの優先言語を決定します。
設定および詳細なトピックについては、ドキュメントを参照してください。
TypeScriptの設定
fastify-intlayerは、国際化プロセスを改善するためにTypeScriptの強力な機能を活用しています。TypeScriptの静的型付けにより、すべての翻訳キーが考慮されていることが保証され、翻訳漏れのリスクが軽減され、保守性が向上します。
自動生成された型(デフォルトでは./types/intlayer.d.ts)がtsconfig.jsonファイルに含まれていることを確認してください。
コードをクリップボードにコピー
VS Code拡張機能
Intlayerでの開発体験を向上させるために、公式のIntlayer VS Code Extensionをインストールできます。
この拡張機能は以下を提供します。
- 翻訳キーのオートコンプリート。
- 翻訳漏れに対するリアルタイムのエラー検出。
- 翻訳されたコンテンツのインラインプレビュー。
- 翻訳を簡単に作成・更新できるクイックアクション。
拡張機能の使用方法の詳細については、Intlayer VS Code Extensionドキュメントを参照してください。
Gitの設定
Intlayerによって生成されたファイルは無視することをお勧めします。これにより、それらをGitリポジトリにコミットすることを避けることができます。
そのためには、.gitignoreファイルに以下の指示を追加します。
コードをクリップボードにコピー
よくある質問
一般的なオプションは i18next と fastify-i18next またはカスタムで書かれた hook で、名前空間ごとに JSON カタログを読み込み、ロケールをリクエストに保存します。別のオプションは fastify-intlayer を通じた Intlayer で、プラグインを自動的に登録し、リクエストごとにロケールを解決し、フロントエンドと同じ型付きコンテンツを共有します。
バックエンドを国際化する理由は、ユーザーが読むテキストの大部分がフロントエンドを通過しないためです。API エラーメッセージ、トランザクションメール、プッシュ通知、SMS、PDF エクスポートなどです。これらは受信者の言語が必要で、セッションごとではなくリクエストごとに解決される必要があります。
Intlayer を選ぶ理由を参照してください。
非常に少ないです。辞書はビルド時にコンパイルされ、宣言したロケールのみが含まれるため、ブート時のカタログ読み込みやリクエストパス上のファイル読み込みはありません。これは特にサーバーレスおよびエッジデプロイメントで重要です。バンドルサイズはコールドスタート時間に影響します。バンドル最適化を参照してください。
はい、2 つのパスがあります。i18next 移行ガイドを使用してコンテンツを段階的に移行できます。または、現在の API を完全に保つことができます。互換性アダプターは i18next と同じ API を公開しますが、Intlayer 辞書によって提供されるため、インポートは変わりますがハンドラーコードは変わりません。
はい。sync JSON プラグインは /messages/{locale}/{namespace}.json ファイルを信頼できるソースとして保持し、Intlayer 辞書を双方向で生成します。sync PO プラグインは gettext カタログに対して同じことを行い、ロケールごとのファイルではロケールを 1 つのファイルにグループ化する代わりに言語で分割できます。
いいえ。npx intlayer extract を実行すると、Intlayer はソースファイルを読み込み、ユーザーが見える文字列を抽出し、各ファイルの隣に .content ファイルを書き込むため、文字列をカタログに 1 つずつコピーする代わりに diff をレビューできます。extract コマンドを参照してください。
同じプロジェクトのフロントエンド側では、Intlayer Compilerはさらに進んで、JSX、TSX、Vue または Svelte ソースからビルド時に辞書を生成するため、アプリの両側は手動で管理されたキーなしで 1 つのコンテンツレイヤーを共有します。
5 つのツールがあり、すべてオプションです。
- VS Code 拡張機能:
useIntlayerキーからそれを宣言するコンテンツファイルにジャンプし、コンポーネントからコンテンツを抽出し、コマンドパレットまたは専用 Intlayer タブからビルド、fill、test、push、pull を実行します。 - LSP サーバー: LSP に対応した任意のエディターで同じ認識を提供し、定義へのジャンプ、すべての参照を検索、翻訳値のホバープレビュー、キーとフィールドのオートコンプリート、キーが宣言されていない場合の警告があります。また、
i18next、react-i18next、next-intl、use-intlの呼び出しも解決し、移行中に役立ちます。 - MCP サーバー: Intlayer ドキュメントと CLI を Cursor、VS Code、Claude Desktop、Claude Code、ChatGPT に公開するため、アシスタントは推測する代わりに現在のドキュメントから回答でき、
intlayer fillなどのコマンドを自分で実行できます。 - エージェントスキル:
intlayer-config、intlayer-cli、intlayer-contentなどの焦点を絞ったスキル、およびフレームワークごとに 1 つのスキルがあり、エージェントにルーティング設定とコンテンツノードタイプを教えます。 - ESLint プラグイン:
no-raw-textはハードコードされた文字列にフラグを立て、静的辞書キーと未使用コンテンツの追加ルールがあります。
