intlayer : Paquet NPM pour gérer la déclaration multilingue du contenu (i18n)

    Intlayer est une suite de paquets conçue spécifiquement pour les développeurs JavaScript. Il est compatible avec des frameworks comme React, Next.js et Express.js.

    Le paquet intlayer vous permet de déclarer votre contenu n'importe où dans votre code. Il convertit les déclarations de contenu multilingue en dictionnaires structurés qui s'intègrent parfaitement à votre application. Avec TypeScript, Intlayer améliore votre développement en fournissant des outils plus puissants et plus efficaces.

    Pourquoi intégrer Intlayer ?

    • Gestion de contenu alimentée par JavaScript : Exploitez la flexibilité de JavaScript pour définir et gérer votre contenu efficacement.
    • Environnement type-sécurisé : Profitez de TypeScript pour garantir que toutes vos définitions de contenu sont précises et exemptes d'erreurs.
    • Fichiers de contenu intégrés : Conservez vos traductions à proximité de leurs composants respectifs, améliorant ainsi la maintenabilité et la clarté.

    Installation

    Installez le paquet nécessaire en utilisant votre gestionnaire de paquets préféré :

    bash
    npm install intlayer

    Configurer Intlayer

    Intlayer fournit un fichier de configuration pour configurer votre projet. Placez ce fichier à la racine de votre projet.

    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;

    Pour une liste complète des paramètres disponibles, consultez la documentation de configuration.

    Exemple d'utilisation

    Avec Intlayer, vous pouvez déclarer votre contenu de manière structurée n'importe où dans votre code.

    Par défaut, Intlayer recherche des fichiers avec l'extension .content.{ts,tsx,js,jsx,mjs,cjs}.

    Vous pouvez modifier l'extension par défaut en définissant la propriété contentDir dans le fichier de configuration.

    bash
    .├── intlayer.config.ts└── src    ├── ClientComponent    │   ├── index.content.ts    │   └── index.tsx    └── ServerComponent        ├── index.content.ts        └── index.tsx

    Déclarez votre contenu

    Voici un exemple de déclaration de contenu :

    tsx
    import { type DeclarationContent, t } from "intlayer";const clientComponentContent = {  key: "client-component",  content: {    myTranslatedContent: t({      en: "Hello World",      fr: "Bonjour le monde",      es: "Hola Mundo",    }),    numberOfCar: enu({      "<-1": "Moins d'une voiture",      "-1": "Moins une voiture",      "0": "Pas de voitures",      "1": "Une voiture",      ">5": "Quelques voitures",      ">19": "Beaucoup de voitures",    }),  },} satisfies DeclarationContent;export default clientComponentContent;

    Construisez vos dictionnaires

    Vous pouvez construire vos dictionnaires en utilisant le intlayer-cli.

    bash
    npx intlayer build

    Cette commande analyse tous les fichiers *.content.*, les compile et écrit les résultats dans le répertoire spécifié dans votre intlayer.config.ts (par défaut, ./.intlayer).

    Une sortie typique pourrait ressembler à :

    bash
    .├── .intlayer│   ├── dictionary  # Contient le dictionnaire de votre contenu│   │   ├── client-component.json│   │   └── server-component.json│   ├── main  # Contient le point d'entrée de votre dictionnaire à utiliser dans votre application│   │   ├── dictionary.cjs│   │   └── dictionary.mjs│   └── types  # Contient les définitions de type auto-générées de votre dictionnaire│       ├── client-component.d.ts│       └── server-component.d.ts└── types    └── intlayer.d.ts  # Contient les définitions de type auto-générées d'Intlayer

    Construire des ressources i18next

    Intlayer peut être configuré pour construire des dictionnaires pour i18next. Pour cela, vous devez ajouter la configuration suivante à votre fichier intlayer.config.ts :

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  /* ... */  content: {    // Indique à Intlayer de générer des fichiers de message pour i18next    dictionaryOutput: ["i18next"],    // Le répertoire où Intlayer écrira vos fichiers JSON de message    i18nextResourcesDir: "./i18next/resources",  },};

    Pour une liste complète des paramètres disponibles, consultez la documentation de configuration.

    Sortie :

    bash
    .└── i18next    └── resources        ├── en        │   ├── client-component.json        │   └── server-component.json        ├── es        │   ├── client-component.json        │   └── server-component.json        └── fr            ├── client-component.json            └── server-component.json

    Par exemple, le en/client-component.json pourrait ressembler à :

    json
    {  "myTranslatedContent": "Hello World",  "zero_numberOfCar": "Pas de voitures",  "one_numberOfCar": "Une voiture",  "two_numberOfCar": "Deux voitures",  "other_numberOfCar": "Quelques voitures"}

    Construire des dictionnaires i18next ou next-intl

    Intlayer peut être configuré pour construire des dictionnaires pour i18next ou next-intl. Pour cela, vous devez ajouter la configuration suivante à votre fichier intlayer.config.ts :

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  /* ... */  content: {    // Indique à Intlayer de générer des fichiers de message pour i18next    dictionaryOutput: ["next-intl"],    // Le répertoire où Intlayer écrira vos fichiers JSON de message    nextIntlMessagesDir: "./i18next/messages",  },};

    Pour une liste complète des paramètres disponibles, consultez la documentation de configuration.

    Sortie :

    bash
    .└── intl    └── messages        ├── en        │   ├── client-component.json        │   └── server-component.json        ├── es        │   ├── client-component.json        │   └── server-component.json        └── fr            ├── client-component.json            └── server-component.json

    Par exemple, le en/client-component.json pourrait ressembler à :

    json
    {  "myTranslatedContent": "Hello World",  "zero_numberOfCar": "Pas de voitures",  "one_numberOfCar": "Une voiture",  "two_numberOfCar": "Deux voitures",  "other_numberOfCar": "Quelques voitures"}

    Outils CLI

    Intlayer fournit un outil CLI pour :

    • auditer vos déclarations de contenu et compléter les traductions manquantes
    • construire des dictionnaires à partir de vos déclarations de contenu
    • pousser et tirer des dictionnaires distants de votre CMS vers votre projet local

    Consultez intlayer-cli pour plus d'informations.

    Utilisez Intlayer dans votre application

    Une fois votre contenu déclaré, vous pouvez consommer vos dictionnaires Intlayer dans votre application.

    Intlayer est disponible en tant que paquet pour votre application.

    Application React

    Pour utiliser Intlayer dans votre application React, vous pouvez utiliser react-intlayer.

    Application Next.js

    Pour utiliser Intlayer dans votre application Next.js, vous pouvez utiliser next-intlayer.

    Application Express

    Pour utiliser Intlayer dans votre application Express, vous pouvez utiliser express-intlayer.

    Fonctions fournies par le paquet intlayer

    Le paquet intlayer fournit également certaines fonctions pour vous aider à internationaliser votre application.

    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