ホームサンドボックスショーケースアプリ文書ブログ
    • English英語
      EN
    • русскийロシア語
      RU
    • 日本語日本語
      JA
    • françaisフランス語
      FR
    • 한국어韓国語
      KO
    • 中文中国語
      ZH
    • españolスペイン語
      ES
    • Deutschドイツ語
      DE
    • العربيةアラビア語
      AR
    • italianoイタリア語
      IT
    • British Englishイギリス英語
      EN-GB
    • portuguêsポルトガル語
      PT
    • हिन्दीヒンディー語
      HI
    • Türkçeトルコ語
      TR
    • polskiポーランド語
      PL
    • Indonesiaインドネシア語
      ID
    • Tiếng Việtベトナム語
      VI
    • українськаウクライナ語
      UK
    /
    フレームワークでドキュメントをフィルター
    Alt+←
    なぜIntlayer?
    始める
    コンセプト
    • Intlayerの仕組み
    • 設定
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • ビジュアルエディター
    • CMS
    • CI/CD統合
    • 翻訳複数形列挙条件性別挿入ファイルネスティングMarkdownHTML関数取得
    • ロケールごとのファイル
    • コンパイラー
    • 自動入力
    • テスト
    • バンドル最適化
    環境
    • Next.js 14とApp Router
      Next.js 15
      Next.js ロケールなし URL
      Next.jsとページルーター
      コンパイラ
    • Tanstack Start Solid
    • AstroおよびReact
      AstroおよびSvelte
      AstroおよびVue
      AstroおよびSolid
      AstroおよびPreact
      AstroおよびLit
      AstroおよびVanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • NuxtおよびVue
    • ViteおよびSolid
    • SvelteKit
    • ViteおよびPreact
    • ViteおよびVanilla JS
    • ViteおよびLit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React NativeとExpo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • LynxおよびReact
    Plugins
    • JSON
    • gettext (.po)
    VS Code拡張機能
    エージェント
    • MCPサーバー
    • エージェントのスキル
    リリース
    • v8
    • v7
    • v6
    ベンチマーク
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    ブログ
    質問をする
    1. Documentation
    2. 環境
    3. Nest
    著者: AydinTheFirst
    作成:2025-09-09最終更新:2026-05-06
    GitHubでアプリケーションテンプレートを見る

    このページにはアプリケーションテンプレートが用意されています。

    このドキュメントをあなたの好きなAIアシスタントに参照してください
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します

    バージョン履歴

    1. "Solid の useIntlayer API の使用法を直接プロパティアクセスに更新"
      v8.9.02026/5/4
    2. "initコマンドを追加"
      v7.5.92025/12/30
    3. "初版ドキュメント"
      v5.8.02025/9/9

    このページのコンテンツはAIを使用して翻訳されました。

    英語の元のコンテンツの最新バージョンを見る
    このドキュメントを編集

    このドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。

    ドキュメントへのGitHubリンク
    コピー

    ドキュメントのMarkdownをクリップボードにコピー

    IntlayerでNest backendを翻訳する | 国際化(i18n)

    express-intlayer は、Expressアプリケーション向けの強力な国際化(i18n)ミドルウェアであり、クライアントの好みに基づいたローカライズされたレスポンスを提供することで、バックエンドサービスをグローバルに利用可能にすることを目的としています。NestJSはExpressの上に構築されているため、express-intlayer をNestJSアプリケーションにシームレスに統合し、多言語コンテンツを効果的に扱うことができます。

    なぜバックエンドを国際化するのか?

    バックエンドを国際化することは、グローバルなユーザーに効果的にサービスを提供するために不可欠です。これにより、アプリケーションは各ユーザーの好みの言語でコンテンツやメッセージを配信できるようになります。この機能はユーザー体験を向上させ、異なる言語背景を持つ人々にとってよりアクセスしやすく、関連性の高いものにすることで、アプリケーションのリーチを広げます。

    実用的なユースケース

    • ユーザーの言語でバックエンドエラーを表示する: エラーが発生した際に、ユーザーの母国語でメッセージを表示することで理解が深まり、フラストレーションが軽減されます。これは特に、トーストやモーダルのようなフロントエンドコンポーネントで表示される動的なエラーメッセージに有効です。

    • 多言語コンテンツの取得: データベースからコンテンツを取得するアプリケーションでは、国際化により複数の言語でコンテンツを提供できるようになります。これは、ユーザーが好む言語で商品説明や記事、その他のコンテンツを表示する必要があるeコマースサイトやコンテンツ管理システムのようなプラットフォームにとって非常に重要です。

    • 多言語メールの送信: トランザクションメール、マーケティングキャンペーン、通知など、受信者の言語でメールを送信することで、エンゲージメントと効果を大幅に向上させることができます。

    • 多言語プッシュ通知: モバイルアプリケーションでは、ユーザーの好みの言語でプッシュ通知を送信することで、インタラクションとリテンションを強化できます。このパーソナルな対応により、通知がより関連性が高く、行動を促すものに感じられます。

    • その他のコミュニケーション: SMSメッセージ、システムアラート、ユーザーインターフェースの更新など、バックエンドからのあらゆる形態のコミュニケーションは、ユーザーの言語で行うことで明確さが増し、全体的なユーザー体験を向上させます。

    バックエンドを国際化することで、アプリケーションは文化的な違いを尊重するだけでなく、グローバル市場のニーズにより適合し、サービスを世界規模で拡大するための重要なステップとなります。

    はじめに

    ide.intlayer.org

    See Application Template on GitHub.

    新しい NestJS プロジェクトの作成

    bash
    コードをコピー

    コードをクリップボードにコピー

    npm install -g @nestjs/clinest new my-nest-app

    インストール

    express-intlayer を使い始めるには、npm を使ってパッケージをインストールします。

    bash
    コードをコピー

    コードをクリップボードにコピー

    npm install intlayer express-intlayernpx intlayer init

    tsconfig.json の設定

    TypeScriptでIntlayerを使用するには、tsconfig.jsonがESモジュールをサポートするように設定されていることを確認してください。これは、moduleとmoduleResolutionのオプションをnodenextに設定することで実現できます。

    tsconfig.json
    コードをコピー

    コードをクリップボードにコピー

    {  compilerOptions: {    module: "nodenext",    moduleResolution: "nodenext",    // ... その他のオプション  },}

    セットアップ

    プロジェクトのルートに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,
      },
    };
    
    export default config;

    コンテンツの宣言

    翻訳を格納するためのコンテンツ宣言を作成および管理します:

    コンテンツ宣言は、contentDir ディレクトリ(デフォルトは ./src)に含まれている限り、アプリケーションのどこにでも定義できます。また、コンテンツ宣言ファイルの拡張子(デフォルトは .content.{json,ts,tsx,js,jsx,mjs,cjs})に一致している必要があります。
    詳細については、コンテンツ宣言のドキュメントを参照してください。

    Express ミドルウェアのセットアップ

    express-intlayer ミドルウェアを NestJS アプリケーションに統合して、国際化を処理します:

    src/app.module.ts
    コードをコピー

    コードをクリップボードにコピー

    import { MiddlewareConsumer, Module, NestModule } from "@nestjs/common";import { AppController } from "./app.controller";import { AppService } from "./app.service";import { intlayer } from "express-intlayer";@Module({  imports: [],  controllers: [AppController],  providers: [AppService],})export class AppModule implements NestModule {  configure(consumer: MiddlewareConsumer) {    consumer.apply(intlayer()).forRoutes("*"); // 全てのルートに適用  }}

    サービスまたはコントローラーで翻訳を使用する

    これで、getIntlayer 関数を使用してサービスやコントローラー内で翻訳にアクセスできます:

    src/app.service.ts
    コードをコピー

    コードをクリップボードにコピー

    import { Injectable } from "@nestjs/common";import { getIntlayer } from "express-intlayer";@Injectable()export class AppService {  getHello(): string {    return getIntlayer("app").greet; // 翻訳された挨拶を取得  }}

    互換性

    express-intlayer は以下と完全に互換性があります:

    • Reactアプリケーション向けの react-intlayer
    • Next.jsアプリケーション向けの next-intlayer
    • Viteアプリケーション向けの vite-intlayer

    また、ブラウザやAPIリクエストを含む様々な環境での国際化ソリューションともシームレスに連携します。ミドルウェアをカスタマイズして、ヘッダーやクッキーを通じてロケールを検出することも可能です:

    intlayer.config.ts
    コードをコピー

    コードをクリップボードにコピー

    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  // ... その他の設定オプション  middleware: {    headerName: "my-locale-header",    cookieName: "my-locale-cookie",  },};export default config;

    デフォルトでは、express-intlayer は Accept-Language ヘッダーを解釈してクライアントの優先言語を判別します。

    設定や高度なトピックの詳細については、ドキュメントをご覧ください。

    TypeScriptの設定

    express-intlayer は、国際化プロセスを強化するために TypeScript の強力な機能を活用しています。TypeScript の静的型付けにより、すべての翻訳キーが確実に管理され、翻訳漏れのリスクを減らし、保守性を向上させます。

    Autocompletion

    Translation error

    自動生成される型定義ファイル(デフォルトでは ./types/intlayer.d.ts)が tsconfig.json ファイルに含まれていることを確認してください。

    tsconfig.json
    コードをコピー

    コードをクリップボードにコピー

    {  // ... 既存の TypeScript 設定  include: [    // ... 既存の TypeScript 設定    ".intlayer/**/*.ts", // 自動生成された型定義を含める  ],}

    VS Code 拡張機能

    Intlayerでの開発体験を向上させるために、公式の Intlayer VS Code 拡張機能 をインストールできます。

    VS Code Marketplaceからインストール

    この拡張機能は以下を提供します:

    • 翻訳キーの オートコンプリート。
    • 欠落している翻訳の リアルタイムエラー検出。
    • 翻訳された内容の インラインプレビュー。
    • 翻訳の作成や更新を簡単に行うための クイックアクション。

    拡張機能の使い方の詳細については、Intlayer VS Code 拡張機能のドキュメントを参照してください。

    Git 設定

    Intlayerによって生成されたファイルは無視することを推奨します。これにより、Gitリポジトリへのコミットを避けることができます。

    これを行うには、以下の指示を .gitignore ファイルに追加してください。

    .gitignore
    コードをコピー

    コードをクリップボードにコピー

    # Intlayer によって生成されたファイルを無視する.intlayer
    Express.js
    Fastify
    Alt+→

    このページについて

      ディスカッションは匿名で、よくある問題に対処するために定期的に確認されます。機能のアイデア、ドキュメントへのフィードバック、Intlayerに関することなど、お気軽にお聞かせください, このフィードバックをロードマップの作成と製品の改善に活用しています。

      npm install -g @nestjs/clinest new my-nest-app
      npm install intlayer express-intlayernpx intlayer init
      {  compilerOptions: {    module: "nodenext",    moduleResolution: "nodenext",    // ... その他のオプション  },}
      import { MiddlewareConsumer, Module, NestModule } from "@nestjs/common";import { AppController } from "./app.controller";import { AppService } from "./app.service";import { intlayer } from "express-intlayer";@Module({  imports: [],  controllers: [AppController],  providers: [AppService],})export class AppModule implements NestModule {  configure(consumer: MiddlewareConsumer) {    consumer.apply(intlayer()).forRoutes("*"); // 全てのルートに適用  }}
      import { Injectable } from "@nestjs/common";import { getIntlayer } from "express-intlayer";@Injectable()export class AppService {  getHello(): string {    return getIntlayer("app").greet; // 翻訳された挨拶を取得  }}
      import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  // ... その他の設定オプション  middleware: {    headerName: "my-locale-header",    cookieName: "my-locale-cookie",  },};export default config;
      {  // ... 既存の TypeScript 設定  include: [    // ... 既存の TypeScript 設定    ".intlayer/**/*.ts", // 自動生成された型定義を含める  ],}
      # Intlayer によって生成されたファイルを無視する.intlayer