ホームサンドボックスショーケースアプリ文書ブログ
    • 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. Testing
    作成:2025-03-01最終更新:2025-09-20
    このドキュメントをあなたの好きなAIアシスタントに参照してください
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

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

    このドキュメントは古く、ベース版は次の日付に更新されました: 2025年10月5日.

    英語のドキュメントへ

    バージョン履歴

    1. "テスト導入"
      v6.0.02025/9/20

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

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

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

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

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

    コンテンツのテスト

    このガイドでは、辞書が完全であることを自動的に検証し、出荷前に翻訳漏れを検出し、アプリ内のローカライズされたUIをテストする方法を説明します。


    テストできること

    • 翻訳漏れ: 必須のロケールが辞書に欠けている場合、CIを失敗させます。
    • ローカライズされたUIのレンダリング: 特定のロケールプロバイダーでコンポーネントをレンダリングし、表示されるテキストや属性を検証します。
    • ビルド時の監査: CLIを使ってローカルで簡単な監査を実行します。

    クイックスタート: CLIによる監査

    プロジェクトのルートから監査を実行します:

    bash
    コードをコピー

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

    npx intlayer content test

    便利なフラグ:

    • --env-file [path]: ファイルから環境変数を読み込みます。
    • -e, --env [name]: 環境プロファイルを選択します。
    • --base-dir [path]: 解決のためのアプリのベースディレクトリを設定します。
    • --verbose: 詳細なログを表示します。
    • --prefix [label]: ログ行にプレフィックスを付けます。

    注意: CLIは詳細なレポートを出力しますが、失敗時に非ゼロで終了しません。CIのゲーティングには、必須ロケールの欠落がゼロであることをアサートするユニットテスト(以下)を追加してください。


    プログラムによるテスト (Vitest/Jest)

    Intlayer CLI APIを使って、必須ロケールの翻訳漏れがないことをアサートします。

    コードをコピー

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

    /* @vitest-environment node */import { listMissingTranslations } from "intlayer/cli";import { describe, expect, it } from "vitest";describe("translations", () => {  it("必須のロケールが欠落していないこと", () => {    const result = listMissingTranslations();    if (result.missingRequiredLocales.length > 0) {      // テストがローカルまたはCIで失敗したときに役立ちます      console.log(result.missingTranslations);    }    expect(result.missingRequiredLocales).toHaveLength(0);  });});

    Jestの同等コード:

    コードをコピー

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

    import { listMissingTranslations } from "intlayer/cli";test("必須のロケールが欠落していないこと", () => {  const result = listMissingTranslations();  if (result.missingRequiredLocales.length > 0) {    console.log(result.missingTranslations);  }  expect(result.missingRequiredLocales).toHaveLength(0);});

    動作の仕組み:

    • Intlayerは設定(locales、requiredLocales)と宣言された辞書を読み込み、以下を報告します:
      • missingTranslations:キーごとに、どのロケールが欠落しているか、どのファイルからかを示します。
      • missingLocales:欠落しているすべてのロケールの集合。
      • missingRequiredLocales:requiredLocalesに限定された部分集合(requiredLocalesが設定されていない場合はすべてのロケール)。

    ローカライズされたUIのテスト(React / Next.js)

    Intlayerプロバイダーの下でコンポーネントをレンダリングし、表示されている内容を検証します。

    Reactの例(Testing Library):

    tsx
    コードをコピー

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

    import { IntlayerProvider } from "react-intlayer/client";import { render, screen } from "@testing-library/react";import { MyComponent } from "./MyComponent";test("renders localized title in English", () => {  render(    <IntlayerProvider locale="en-US">      <MyComponent />    </IntlayerProvider>  );  expect(screen.getByText("期待される英語のタイトル")).toBeInTheDocument();});

    Next.js(App Router)例:フレームワークのラッパーを使用します:

    tsx
    コードをコピー

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

    import { IntlayerClientProvider } from "next-intlayer/client";import { render, screen } from "@testing-library/react";import { MyPage } from "./MyPage";test("フランス語でローカライズされた見出しをレンダリングする", () => {  render(    <IntlayerClientProvider locale="fr-FR">      <MyPage />    </IntlayerClientProvider>  );  expect(    screen.getByRole("heading", { name: "期待されるタイトル" })  ).toBeInTheDocument();});

    ヒント:

    • 属性の生の文字列値(例:aria-label)が必要な場合は、ReactのuseIntlayerから返される.valueフィールドにアクセスしてください。
    • コンポーネントと辞書を同じ場所に配置しておくことで、ユニットテストやクリーンアップが容易になります。

    継続的インテグレーション

    必要な翻訳が欠落している場合にビルドを失敗させるテストを追加します。

    package.json:

    json
    コードをコピー

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

    {  "scripts": {    "test:i18n": "vitest run -c"  }}

    GitHub Actions の例:

    yaml
    コードをコピー

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

    name: CIon: [push, pull_request]jobs:  test:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - uses: actions/setup-node@v4        with:          node-version: 20      - run: npm ci      - run: npm run test:i18n

    オプション: テストと並行して、人間が読みやすい要約を得るために CLI 監査を実行します:

    bash
    コードをコピー

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

    npx intlayer content test --verbose

    トラブルシューティング

    • Intlayerの設定でlocalesおよび(オプションで)requiredLocalesが定義されていることを確認してください。
    • アプリが動的またはリモートの辞書を使用している場合は、辞書が利用可能な環境でテストを実行してください。
    • 混在するモノレポの場合は、CLIに正しいアプリケーションルートを指示するために--base-dirを使用してください。

    自動入力
    バンドル最適化
    Alt+→

    このページについて

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

      npx intlayer content test
      /* @vitest-environment node */import { listMissingTranslations } from "intlayer/cli";import { describe, expect, it } from "vitest";describe("translations", () => {  it("必須のロケールが欠落していないこと", () => {    const result = listMissingTranslations();    if (result.missingRequiredLocales.length > 0) {      // テストがローカルまたはCIで失敗したときに役立ちます      console.log(result.missingTranslations);    }    expect(result.missingRequiredLocales).toHaveLength(0);  });});
      import { listMissingTranslations } from "intlayer/cli";test("必須のロケールが欠落していないこと", () => {  const result = listMissingTranslations();  if (result.missingRequiredLocales.length > 0) {    console.log(result.missingTranslations);  }  expect(result.missingRequiredLocales).toHaveLength(0);});
      import { IntlayerProvider } from "react-intlayer/client";import { render, screen } from "@testing-library/react";import { MyComponent } from "./MyComponent";test("renders localized title in English", () => {  render(    <IntlayerProvider locale="en-US">      <MyComponent />    </IntlayerProvider>  );  expect(screen.getByText("期待される英語のタイトル")).toBeInTheDocument();});
      import { IntlayerClientProvider } from "next-intlayer/client";import { render, screen } from "@testing-library/react";import { MyPage } from "./MyPage";test("フランス語でローカライズされた見出しをレンダリングする", () => {  render(    <IntlayerClientProvider locale="fr-FR">      <MyPage />    </IntlayerClientProvider>  );  expect(    screen.getByRole("heading", { name: "期待されるタイトル" })  ).toBeInTheDocument();});
      {  "scripts": {    "test:i18n": "vitest run -c"  }}
      name: CIon: [push, pull_request]jobs:  test:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - uses: actions/setup-node@v4        with:          node-version: 20      - run: npm ci      - run: npm run test:i18n
      npx intlayer content test --verbose