AccueilBac à sableShowcaseAppDocBlog
    • Englishanglais
      EN
    • русскийrusse
      RU
    • 日本語japonais
      JA
    • françaisfrançais
      FR
    • 한국어coréen
      KO
    • 中文chinois
      ZH
    • españolespagnol
      ES
    • Deutschallemand
      DE
    • العربيةarabe
      AR
    • italianoitalien
      IT
    • British Englishanglais britannique
      EN-GB
    • portuguêsportugais
      PT
    • हिन्दीhindi
      HI
    • Türkçeturc
      TR
    • polskipolonais
      PL
    • Indonesiaindonésien
      ID
    • Tiếng Việtvietnamien
      VI
    • українськаukrainien
      UK
    /
    Filtrer la documentation par framework
    Alt+←
    Pourquoi Intlayer ?
    Commencer
    Concept
    • Comment Intlayer fonctionne
    • Configuration
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Éditeur visuel
    • CMS
    • Intégration CI/CD
    • TraductionPlurielÉnumérationConditionGenreInsertionFichierImbricationMarkdownHTMLRécupération de fonction
    • Fichier par locale
    • Compilateur
    • Remplissage automatique
    • Tests
    • Optimisation de bundle
    Environnement
    • Next.js 14 et App Router
      Next.js 15
      Next.js sans locale URL
      Next.js et Page Router
      Compiler
    • Tanstack Start Solid
    • Astro et React
      Astro et Svelte
      Astro et Vue
      Astro et Solid
      Astro et Preact
      Astro et Lit
      Astro et Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt et Vue
    • Vite et Solid
    • SvelteKit
    • Vite et Preact
    • Vite et Vanilla JS
    • Vite et Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native et Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx et React
    Plugins
    • JSON
    • gettext (.po)
    Extension VS Code
    Agent
    • Serveur MCP
    • Compétences de l’agent
    Versions
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Poser une question
    1. Documentation
    2. Testing
    Création:2025-03-01Dernière mise à jour:2025-09-20
    Référencez cette doc à votre assistant AI préféré
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix

    Ce document n'est pas à jour, la version de base a été mise à jour le 5 octobre 2025.

    Aller à la doc anglaise

    Historique des versions

    1. "Introduction des tests"
      v6.0.020/09/2025

    Le contenu de cette page a été traduit à l'aide d'une IA.

    Voir la dernière version du contenu original en anglais
    Modifier cette documentation

    Si vous avez une idée d’amélioration pour améliorer cette documentation, n’hésitez pas à contribuer en submitant une pull request sur GitHub.

    Lien GitHub de la documentation
    Copier

    Copier le Markdown du doc dans le presse-papiers

    Tester votre contenu

    Ce guide montre comment vérifier automatiquement que vos dictionnaires sont complets, détecter les traductions manquantes avant la mise en production, et tester l’interface localisée dans votre application.


    Ce que vous pouvez tester

    • Traductions manquantes : échouer le CI si des locales requises manquent dans un dictionnaire.
    • Rendu de l’interface localisée : afficher des composants avec un fournisseur de locale spécifique et vérifier le texte/attributs visibles.
    • Audits au moment de la compilation : exécuter un audit rapide localement via la CLI.

    Démarrage rapide : audit via CLI

    Lancez l’audit depuis la racine de votre projet :

    bash
    Copier le code

    Copier le code dans le presse-papiers

    npx intlayer content test

    Options utiles :

    • --env-file [path] : charger les variables d’environnement depuis un fichier.
    • -e, --env [name] : sélectionner un profil d’environnement.
    • --base-dir [path] : définir le répertoire de base de l’application pour la résolution.
    • --verbose : afficher les logs détaillés.
    • --prefix [label] : préfixer les lignes de log.

    Note : la CLI affiche un rapport détaillé mais ne retourne pas un code d’erreur en cas d’échec. Pour un contrôle en CI, ajoutez un test unitaire (ci-dessous) qui vérifie qu’aucune locale requise n’est manquante.


    Test programmatique (Vitest/Jest)

    Utilisez l’API CLI d’Intlayer pour vérifier qu’il n’y a pas de traductions manquantes pour vos locales requises.

    Copier le code

    Copier le code dans le presse-papiers

    /* @vitest-environment node */import { listMissingTranslations } from "intlayer/cli";import { describe, expect, it } from "vitest";describe("traductions", () => {  it("n’a pas de locales requises manquantes", () => {    const result = listMissingTranslations();    if (result.missingRequiredLocales.length > 0) {      // Utile lorsque le test échoue localement ou en CI      console.log(result.missingTranslations);    }    expect(result.missingRequiredLocales).toHaveLength(0);  });});

    Équivalent Jest :

    Copier le code

    Copier le code dans le presse-papiers

    import { listMissingTranslations } from "intlayer/cli";test("n’a pas de locales requises manquantes", () => {  const result = listMissingTranslations();  if (result.missingRequiredLocales.length > 0) {    console.log(result.missingTranslations);  }  expect(result.missingRequiredLocales).toHaveLength(0);});

    Comment ça fonctionne :

    • Intlayer lit votre configuration (locales, requiredLocales) et les dictionnaires déclarés, puis rapporte :
      • missingTranslations : pour chaque clé, quelles locales sont manquantes et dans quel fichier.
      • missingLocales : l’union de toutes les locales manquantes.
      • missingRequiredLocales : sous-ensemble limité aux requiredLocales (ou toutes les locales si requiredLocales n’est pas défini).

    Tester une interface localisée (React / Next.js)

    Rendez les composants sous un fournisseur Intlayer et vérifiez le contenu visible.

    Exemple React (Testing Library) :

    tsx
    Copier le code

    Copier le code dans le presse-papiers

    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("Titre anglais attendu")).toBeInTheDocument();});

    Exemple Next.js (App Router) : utilisez le wrapper du framework :

    tsx
    Copier le code

    Copier le code dans le presse-papiers

    import { IntlayerClientProvider } from "next-intlayer/client";import { render, screen } from "@testing-library/react";import { MyPage } from "./MyPage";test("affiche le titre localisé en français", () => {  render(    <IntlayerClientProvider locale="fr-FR">      <MyPage />    </IntlayerClientProvider>  );  expect(    screen.getByRole("heading", { name: "Titre attendu" })  ).toBeInTheDocument();});

    Conseils :

    • Lorsque vous avez besoin des valeurs brutes des chaînes pour des attributs (par exemple, aria-label), accédez au champ .value retourné par useIntlayer dans React.
    • Gardez les dictionnaires proches des composants pour faciliter les tests unitaires et le nettoyage.

    Intégration Continue

    Ajoutez un test qui fait échouer la compilation lorsque des traductions requises sont manquantes.

    package.json :

    json
    Copier le code

    Copier le code dans le presse-papiers

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

    Exemple GitHub Actions :

    yaml
    Copier le code

    Copier le code dans le presse-papiers

    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

    Optionnel : lancez l'audit CLI pour un résumé lisible par un humain en parallèle des tests :

    bash
    Copier le code

    Copier le code dans le presse-papiers

    npx intlayer content test --verbose

    Dépannage

    • Assurez-vous que votre configuration Intlayer définit locales et (optionnellement) requiredLocales.
    • Si votre application utilise des dictionnaires dynamiques ou distants, exécutez les tests dans un environnement où les dictionnaires sont disponibles.
    • Pour les monorepos mixtes, utilisez --base-dir pour indiquer au CLI la racine correcte de l'application.

    Remplissage automatique
    Optimisation de bundle
    Alt+→

    Dans cette page

      Les discussions sont anonymes et régulièrement analysées pour traiter les problèmes fréquents. N'hésitez pas à partager vos idées de fonctionnalités, vos retours sur la documentation ou tout ce qui concerne Intlayer, nous utilisons ces retours pour construire notre roadmap et améliorer le produit.

      npx intlayer content test
      /* @vitest-environment node */import { listMissingTranslations } from "intlayer/cli";import { describe, expect, it } from "vitest";describe("traductions", () => {  it("n’a pas de locales requises manquantes", () => {    const result = listMissingTranslations();    if (result.missingRequiredLocales.length > 0) {      // Utile lorsque le test échoue localement ou en CI      console.log(result.missingTranslations);    }    expect(result.missingRequiredLocales).toHaveLength(0);  });});
      import { listMissingTranslations } from "intlayer/cli";test("n’a pas de locales requises manquantes", () => {  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("Titre anglais attendu")).toBeInTheDocument();});
      import { IntlayerClientProvider } from "next-intlayer/client";import { render, screen } from "@testing-library/react";import { MyPage } from "./MyPage";test("affiche le titre localisé en français", () => {  render(    <IntlayerClientProvider locale="fr-FR">      <MyPage />    </IntlayerClientProvider>  );  expect(    screen.getByRole("heading", { name: "Titre attendu" })  ).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