このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "Solid の useIntlayer API の使用法を直接プロパティアクセスに更新"v8.9.02026/5/4
- "initコマンドを追加"v7.5.92025/12/30
- "初版ドキュメント"v5.8.02025/9/9
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
Intlayer を使用して Nest バックエンド Web サイトを多言語化する | 国際化 (i18n)
express-intlayer は Express アプリケーション向けの強力な国際化 (i18n) ミドルウェアであり、クライアントの設定に基づいたローカライズされたレスポンスを提供することで、バックエンド サービスをグローバルにアクセス可能にするよう設計されています。NestJS は Express の上に構築されているため、express-intlayer を NestJS アプリケーションにシームレスに統合して、多言語コンテンツを効果的に処理できます。
tical Use Cases
ユーザーの言語でバックエンドエラーを表示する: エラーが発生した場合、ユーザーの母国語でメッセージを表示することで、理解が向上し、フラストレーションが軽減されます。これは、トーストやモーダルなどのフロントエンドコンポーネントに表示される可能性のある動的なエラーメッセージに特に役立ちます。
多言語コンテンツの取得: データベースからコンテンツを取得するアプリケーションの場合、国際化により、複数の言語でこのコンテンツを提供できることが保証されます。これは、製品説明、記事、およびユーザーが希望する言語でその他のコンテンツを表示する必要があるe-commerceサイトやコンテンツ管理システムなどのプラットフォームにとって重要です。
多言語メールの送信: トランザクションメール、マーケティングキャンペーン、通知など、受信者の言語でメールを送信することで、エンゲージメントと効果を大幅に向上させることができます。
多言語プッシュ通知: モバイルアプリケーションの場合、ユーザーの優先言語でプッシュ通知を送信することで、インタラクションと保持率を向上させることができます。この個人的なタッチにより、通知がより関連性が高く、実用的に感じられるようになります。
その他の通信: SMS メッセージ、システムアラート、またはユーザーインターフェースの更新など、バックエンドからのあらゆる形式の通信は、ユーザーの言語で行われることで、明確性を確保し、全体的なユーザーエクスペリエンスを向上させます。
バックエンドを国際化することで、アプリケーションは文化的な違いを尊重するだけでなく、グローバル市場のニーズにより適切に対応し、サービスを世界規模で拡張するための重要なステップとなります。
はじめに
新しい NestJS プロジェクトの作成
コードをクリップボードにコピー
インストール
express-intlayer を使い始めるには、npm を使ってパッケージをインストールします。
コードをクリップボードにコピー
--interactiveフラグはオプションです。AI エージェントの場合はintlayer-cli initを使用してください。
このコマンドは環境を検出し、必要なパッケージをインストールします。例えば:
コードをクリップボードにコピー
tsconfig.json の設定
TypeScriptでIntlayerを使用するには、tsconfig.jsonがESモジュールをサポートするように設定されていることを確認してください。これは、moduleとmoduleResolutionのオプションをnodenextに設定することで実現できます。
コードをクリップボードにコピー
セットアップ
プロジェクトのルートにintlayer.config.tsを作成して、国際化設定を構成します。
コードをクリップボードにコピー
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
defaultLocale: Locales.ENGLISH,
},
};
export default config;
コンテンツの宣言
翻訳を格納するためのコンテンツ宣言を作成および管理します:
コンテンツ宣言は、contentDirディレクトリ(デフォルトは./src)に含まれている限り、アプリケーションのどこにでも定義できます。また、コンテンツ宣言ファイルの拡張子(デフォルトは.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml})に一致している必要があります。
詳細については、コンテンツ宣言のドキュメントを参照してください。
Express ミドルウェアのセットアップ
express-intlayer ミドルウェアを NestJS アプリケーションに統合して、国際化を処理します:
コードをクリップボードにコピー
サービスまたはコントローラーで翻訳を使用する
これで、getIntlayer 関数を使用してサービスやコントローラー内で翻訳にアクセスできます:
コードをクリップボードにコピー
互換性
express-intlayer は以下と完全に互換性があります:
- Reactアプリケーション向けの
react-intlayer - Next.jsアプリケーション向けの
next-intlayer - Viteアプリケーション向けの
vite-intlayer
また、ブラウザやAPIリクエストを含む様々な環境での国際化ソリューションともシームレスに連携します。ミドルウェアをカスタマイズして、ヘッダーやクッキーを通じてロケールを検出することも可能です:
コードをクリップボードにコピー
デフォルトでは、express-intlayer は Accept-Language ヘッダーを解釈してクライアントの優先言語を判別します。
設定や高度なトピックの詳細については、ドキュメントをご覧ください。
TypeScriptの設定
express-intlayer は、国際化プロセスを強化するために TypeScript の強力な機能を活用しています。TypeScript の静的型付けにより、すべての翻訳キーが確実に管理され、翻訳漏れのリスクを減らし、保守性を向上させます。


自動生成される型定義ファイル(デフォルトでは ./types/intlayer.d.ts)が tsconfig.json ファイルに含まれていることを確認してください。
コードをクリップボードにコピー
VS Code 拡張機能
Intlayerでの開発体験を向上させるために、公式の Intlayer VS Code 拡張機能 をインストールできます。
この拡張機能は以下を提供します:
- 翻訳キーの オートコンプリート。
- 欠落している翻訳の リアルタイムエラー検出。
- 翻訳された内容の インラインプレビュー。
- 翻訳の作成や更新を簡単に行うための クイックアクション。
拡張機能の使い方の詳細については、Intlayer VS Code 拡張機能のドキュメントを参照してください。
Git 設定
Intlayerによって生成されたファイルは無視することを推奨します。これにより、Gitリポジトリへのコミットを避けることができます。
これを行うには、以下の指示を .gitignore ファイルに追加してください。
コードをクリップボードにコピー
よくある質問
NestJS には nestjs-i18n があり、これが一般的な選択肢で、JSON または YAML カタログとリクエストスコープのサービスをカバーしています。別の選択肢は express-intlayer を通じた Intlayer で、フロントエンドと同じ宣言されたコンテンツを使用し、辞書に対して型付けされており、AI 翻訳と CMS が付属しています。
バックエンドを国際化する理由は、ユーザーが読むテキストの大部分がフロントエンドを通過しないためです。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はハードコードされた文字列にフラグを立て、静的辞書キーと未使用コンテンツのさらなるルールがあります。