# General Translation Knowledge Base: General Translation vs i18next, react-intl et next-intl : quelle bibliothèque d’i18n choisir ?
URL: https://generaltranslation.com/fr/kb/general-translation-vs-i18n-libraries.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Les bibliothèques open source comme i18next, react-intl et next-intl ne traduisent rien. Elles affichent les traductions que vous leur fournissez dans un fichier de catalogue par langue, rédigées par vous, vos traducteurs ou un service tiers. Les bibliothèques de General Translation sont elles aussi open source et remplissent le même rôle, mais General Translation se charge en plus de la traduction, en s’appuyant sur votre code comme contexte.
Category: Internationalisation
Last updated: 2026-10-16
Authors: General Translation Team
Published: 2026-10-16

Une bibliothèque d’internationalisation (i18n) remplit deux fonctions pendant l’exécution de votre application : elle sélectionne le message correspondant au paramètre régional de l’utilisateur, et elle formate les formes plurielles, les dates et les nombres selon ce paramètre régional. Les bibliothèques open source comme i18next, react-intl, next-intl, Lingui et vue-i18n assurent ces deux fonctions, mais aucune ne traduit votre contenu. Ce travail vous revient, en amont de l’exécution : placer chaque chaîne de caractères dans un fichier de catalogue, par clé ou en extrayant les messages intégrés, faire traduire chaque catalogue, puis les tenir tous à jour au fil des évolutions de l’IU. Les bibliothèques de General Translation remplissent les mêmes fonctions à l’exécution, et General Translation se charge en plus de la traduction : les textes restent intégrés dans vos composants, et les traductions sont générées lors d’une étape de compilation.

## Les points forts des bibliothèques établies

Chacune de ces bibliothèques est mature, gratuite et largement utilisée, et chacune a ses propres atouts :

* **i18next** est la plus téléchargée. Elle fonctionne dans n’importe quel environnement JavaScript, et l’outil officiel `i18next-cli` extrait les clés de votre code et génère les types TypeScript correspondants.
* **react-intl** (FormatJS) repose sur ICU MessageFormat, la syntaxe standard pour les formes plurielles et les sélections. Sa documentation recommande d’écrire chaque `defaultMessage` directement dans le code, accompagné d’une `description` destinée aux traducteurs, puis de rassembler ces messages dans un catalogue avec `formatjs extract`.
* **next-intl** est conçue pour l’App Router de Next.js. Ses traductions fonctionnent dans les Composants serveur, les messages utilisés uniquement par des Composants serveur peuvent être tenus à l’écart du client, et les clés de message peuvent être vérifiées par le typage. Son API de messages intégrés, ajoutée dans la version 4.5, est toujours signalée comme expérimentale.
* **Lingui** conserve le texte source intégré au code grâce à des macros telles que `<Trans>`, génère les identifiants de message à votre place et extrait les messages dans des catalogues PO.
* **vue-i18n** est le plugin i18n de Vue 3, avec des messages en JSON, en YAML ou dans des blocs `<i18n>` au sein des composants monofichiers.

Toutes stockent les traductions dans des formats de catalogue, comme JSON et PO, que les traducteurs et les systèmes de gestion de la traduction (TMS) utilisent déjà.

## Ce qui reste à votre charge

Aucune de ces bibliothèques ne traduit quoi que ce soit. Les traductions sont fournies par vous, par vos traducteurs ou par un service distinct, comme Locize de l&#39;équipe i18next, ou un TMS tel que Crowdin. Voici un petit composant de boîte de réception avec react-i18next :

```json title="locales/en/translation.json"
{
  "inbox": {
    "title": "Inbox",
    "unread_one": "You have {{count}} unread message.",
    "unread_other": "You have {{count}} unread messages."
  }
}
```

```tsx title="Inbox.tsx"
import { useTranslation } from 'react-i18next';

export function Inbox({ count }: { count: number }) {
  const { t } = useTranslation();
  return (
    <section>
      <h1>{t('inbox.title')}</h1>
      <p>{t('inbox.unread', { count })}</p>
    </section>
  );
}
```

Chacune des autres langues nécessite ensuite son propre fichier, par exemple `locales/es/translation.json`, rédigé à la main ou confié à des traducteurs. Chaque fichier doit également contenir les formes du pluriel propres à sa langue, sous forme de clés distinctes : le japonais n&#39;en utilise qu&#39;une, le polonais quatre et l&#39;arabe six (`_zero`, `_one`, `_two`, `_few`, `_many` et `_other`). Toute chaîne de caractères ajoutée au composant reste absente de tous les autres fichiers tant que personne ne l&#39;y ajoute, et la personne qui traduit le catalogue ne voit que `inbox.unread_other` accompagné d&#39;une phrase, sans l&#39;écran où elle s&#39;affiche.

## General Translation fait de même, et génère en plus les traductions

Les bibliothèques de General Translation remplissent le même rôle qu&#39;i18next, react-intl et next-intl. Elles sélectionnent les bons messages pour chaque paramètre régional, appliquent les règles de pluriel correspondantes et formatent les nombres, les devises et les dates avec [`<Num>`](/docs/react/reference/components/num), [`<Currency>`](/docs/react/reference/components/currency) et [`<DateTime>`](/docs/react/reference/components/datetime). Elles prennent en charge les variables de style ICU dans les chaînes [`useGT`](/docs/react/reference/hooks/use-gt), les dictionnaires à clés via [`useTranslations`](/docs/react/reference/hooks/use-translations) pour les équipes qui préfèrent les clés et, dans `gt-next`, une URL par paramètre régional. General Translation va ensuite plus loin que les autres bibliothèques : il génère les traductions.

Voici la même boîte de réception avec `gt-react`. Le texte reste dans le composant, [`<T>`](/docs/react/reference/components/t) délimite le JSX à traduire et [`<Plural>`](/docs/react/reference/components/plural) contient les formes anglaises :

```tsx title="Inbox.tsx"
import { T, Plural, Num } from 'gt-react';

export function Inbox({ count }: { count: number }) {
  return (
    <T>
      <section>
        <h1>Inbox</h1>
        <Plural
          n={count}
          one={<p>You have <Num>{count}</Num> unread message.</p>}
          other={<p>You have <Num>{count}</Num> unread messages.</p>}
        />
      </section>
    </T>
  );
}
```

Si vous exécutez [`npx gt translate`](/docs/cli/reference/commands/translate) avant votre compilation, chaque bloc [`<T>`](/docs/react/reference/components/t) est envoyé, avec sa structure d&#39;éléments, à l&#39;API de General Translation, qui génère une traduction pour chaque locale cible. Vous rédigez les formes du pluriel qu&#39;utilise l&#39;anglais, et la traduction génère celles dont chaque langue cible a besoin, comme `few` et `many` en polonais. [`<Plural>`](/docs/react/reference/components/plural) choisit ensuite une branche traduite selon les règles de pluriel du paramètre régional du lecteur. [`<Num>`](/docs/react/reference/components/num) formate le nombre selon le paramètre régional du lecteur au moment de l&#39;affichage, et une valeur encapsulée dans [`<Var>`](/docs/react/reference/components/var) n&#39;est jamais envoyée à l&#39;API. Si vous modifiez la phrase, elle est retraduite lors de l&#39;exécution suivante ; si vous supprimez le composant, ses traductions disparaissent avec lui.

Les bibliothèques de General Translation prennent en charge Next.js (`gt-next`), React (`gt-react`), Vue 3 (`gt-vue`) et Node.js (`gt-node`), et des bibliothèques expérimentales existent pour React Native, TanStack Start ainsi que Flask et FastAPI en Python. Elles sont sous licence MIT et fonctionnent sans compte General Translation : elles chargent les traductions depuis n&#39;importe quelle source, et [`gt generate`](/docs/cli/reference/commands/generate) génère des fichiers modèles pour les équipes qui traduisent manuellement. `gt-react` et `gt-next` ne reposent sur aucune autre bibliothèque d’i18n, car l&#39;analyse et le formatage des messages ICU sont assurés par les propres paquets de General Translation. Par défaut, les traductions sont livrées sous forme de fichiers dans votre compilation, mais elles peuvent aussi être chargées depuis le CDN de General Translation.

## Comparaison des bibliothèques

| Bibliothèque                                                       | Rédaction du texte                                                                                                 | Traduit votre contenu ? | Origine des traductions                                                                                                                    | Formes plurielles                                                                                                                 |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| [i18next](/kb/general-translation-vs-i18next) avec `react-i18next` | Clés dans un fichier JSON par paramètre régional                                                                   | Non                     | Vous, des traducteurs ou un service tel que Locize                                                                                         | Une clé par forme du pluriel                                                                                                      |
| [`react-intl`](/kb/general-translation-vs-react-intl) (FormatJS)   | Texte `defaultMessage` intégré, extrait dans un catalogue JSON                                                     | Non                     | Vous, des traducteurs ou un TMS                                                                                                            | ICU MessageFormat                                                                                                                 |
| `next-intl`                                                        | Clés dans un fichier JSON par paramètre régional                                                                   | Non                     | Vous, des traducteurs ou un TMS tel que Crowdin                                                                                            | ICU MessageFormat                                                                                                                 |
| [Lingui](/kb/general-translation-vs-lingui)                        | Macros intégrées, extraites dans des catalogues PO                                                                 | Non                     | Vous, des traducteurs ou un TMS tel que Crowdin                                                                                            | ICU MessageFormat                                                                                                                 |
| [`vue-i18n`](/kb/general-translation-vs-vue-i18n)                  | Clés dans des objets de messages par paramètre régional                                                            | Non                     | Vous, des traducteurs ou un TMS                                                                                                            | Formes séparées par une barre verticale ; la version 11 nécessite une règle personnalisée pour des langues comme le polonais      |
| General Translation (`gt-react`, `gt-next`, `gt-vue`)              | JSX dans [`<T>`](/docs/react/reference/components/t), ou chaînes via [`useGT`](/docs/react/reference/hooks/use-gt) | Oui                     | Générées par [`npx gt translate`](/docs/cli/reference/commands/translate) à partir du contexte de votre code, ou rédigées par votre équipe | Branches [`<Plural>`](/docs/react/reference/components/plural) ; la traduction génère les formes requises par chaque langue cible |

Conservez i18next, react-intl, next-intl, Lingui ou vue-i18n si vos catalogues et votre processus de traduction fonctionnent déjà, si vos traducteurs ou votre TMS s&#39;appuient sur des fichiers de catalogue, ou si votre framework n&#39;est pas pris en charge par les bibliothèques de General Translation. Optez pour les bibliothèques de General Translation si vous souhaitez que le texte reste lisible dans vos composants, que les traductions tiennent compte du contexte de votre code et que chaque langue soit à jour dès chaque compilation, sans attendre un cycle de traduction.

## Conservez votre bibliothèque ou migrez route par route

Changer de bibliothèque n&#39;est pas obligatoire. La CLI `gt` détecte `next-intl` ou `i18next` dans votre `package.json` et traduit les fichiers JSON correspondants en conservant leur syntaxe de messages. Les projets `react-i18next` et `next-i18next` sont également pris en charge lorsque `i18next` est une dépendance directe. Indiquez vos catalogues dans `gt.config.json` :

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": ["es", "fr", "ja"],
  "files": {
    "json": {
      "include": ["locales/[locale]/*.json"]
    }
  }
}
```

Pour fournir à une clé le contexte que son texte ne peut pas transmettre à lui seul, ajoutez un fichier associé, par exemple `locales/en/translation.metadata.json`, contenant une entrée `context` ou `maxChars` pour cette clé. (Consultez [Métadonnées associées aux clés](/docs/cli/reference/keyed-metadata) et [Générer des traductions](/docs/cli/guides/generating-translations).)

Pour passer à [`<T>`](/docs/react/reference/components/t), suivez le guide [Migrer depuis d&#39;autres bibliothèques i18n](/docs/react/guides/migrating-i18n-libraries). Il présente trois approches : remplacer les recherches par clé par du texte intégré, conserver vos dictionnaires et appeler [`useTranslations`](/docs/react/reference/hooks/use-translations), ou faire cohabiter les deux bibliothèques le temps de migrer une route après l&#39;autre.

General Translation a gagné la confiance des meilleures équipes de développement au monde, notamment chez Cursor, Ramp, Profound, Cognition, Sierra et ClickHouse. Pour l&#39;essayer sur votre application, commencez par le [Démarrage rapide avec Next.js](/docs/react/nextjs-quickstart), le [Démarrage rapide avec React](/docs/react/react-quickstart) ou le [Démarrage rapide avec Vue](/docs/vue/quickstart).

## Points clés

* i18next, react-intl, next-intl et les autres bibliothèques i18n open source ne traduisent rien. Elles se contentent d&#39;afficher et de formater des traductions que vous devez produire et tenir à jour vous-même.
* Les bibliothèques de General Translation assurent le même travail d&#39;affichage et de formatage et sont, elles aussi, open source et sous licence MIT. Mais General Translation se charge en plus de la traduction, à partir du texte rédigé directement dans [`<T>`](/docs/react/reference/components/t) : il n&#39;y a donc ni clés ni catalogues à synchroniser.
* Vous pouvez conserver i18next ou next-intl et utiliser la CLI `gt` pour traduire leurs fichiers JSON, ou migrer route par route.

## Related questions

- [Pourquoi utiliser General Translation plutôt qu’un TMS (Smartling, Lokalise, Phrase, Crowdin ou Transifex) ?](https://generaltranslation.com/fr/kb/general-translation-vs-tms.mdx): Un système de gestion de la traduction (TMS) comme Smartling, Lokalise, Phrase, Crowdin ou Transifex coordonne les traducteurs, mais les ingénieurs doivent toujours extraire les chaînes, les envoyer, attendre les traductions, puis les réintégrer dans le produit. General Translation traduit le contenu directement dans votre code, avec son contexte, fournit toutes les langues à chaque livraison et repose sur des bibliothèques open source, sans dépendance à un fournisseur.
- [Alternatives à Google Translate : General Translation vs Google Translate](https://generaltranslation.com/fr/kb/general-translation-vs-google-translate.mdx): Google Translate permet de traduire rapidement un texte ponctuel, mais pour livrer un produit dans une autre langue, il faut aussi traduire chaque chaîne de caractères dans son contexte, garantir la cohérence des termes, gérer correctement les variables et les formes plurielles, prévoir une relecture et mettre en place un processus de livraison. General Translation comprend le contexte de chaque chaîne de caractères dans votre code et automatise l’ensemble du workflow de localisation, du code à la relecture, jusqu’à chaque livraison.
- [Alternatives à i18next : General Translation ou i18next](https://generaltranslation.com/fr/kb/general-translation-vs-i18next.mdx): Choisissez General Translation pour conserver vos textes directement dans vos composants React et générer des traductions en tirant parti de leur structure JSX et du contexte de votre produit. Vous pouvez aussi conserver i18next et utiliser General Translation pour traduire vos catalogues existants. i18next assure le rendu des messages et la sélection des formes plurielles ; la génération des traductions relève d’un service distinct.
- [Alternatives à react-intl : General Translation ou react-intl](https://generaltranslation.com/fr/kb/general-translation-vs-react-intl.mdx): General Translation permet aux équipes React de conserver la syntaxe de messages ICU tout en y ajoutant la génération de traductions, une terminologie partagée et la relecture dans le tableau de bord. react-intl fournit le formatage et l’outillage de catalogues FormatJS ; General Translation produit en plus les traductions.
- [General Translation ou vue-i18n : lequel choisir ?](https://generaltranslation.com/fr/kb/general-translation-vs-vue-i18n.mdx): General Translation permet aux équipes Vue d’écrire le texte source directement dans les modèles et de générer les traductions avec la CLI. Son plugin gt-vue affiche ce contenu avec une gestion des formes plurielles et un formatage des nombres adaptés au paramètre régional. Optez pour cette solution si vous ne voulez plus maintenir de fichiers sources à clés ; vue-i18n reste pertinent pour les équipes qui utilisent le module i18n de Nuxt et un workflow de catalogue bien établi.

## Previous and next questions

- Previous question: [General Translation ou Weblate : lequel choisir ?](https://generaltranslation.com/fr/kb/general-translation-vs-weblate.mdx)
- Next question: [Pourquoi utiliser General Translation plutôt qu’un TMS (Smartling, Lokalise, Phrase, Crowdin ou Transifex) ?](https://generaltranslation.com/fr/kb/general-translation-vs-tms.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/fr/kb/sitemap.md) for every article.
