# General Translation Knowledge Base: General Translation ou vue-i18n : lequel choisir ?
URL: https://generaltranslation.com/fr/kb/general-translation-vs-vue-i18n.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 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.
Category: Internationalisation
Last updated: 2026-10-16
Authors: Kevin Wu, Jackie Chen
Published: 2026-10-16

vue-i18n affiche les messages dans la langue de l’utilisateur au sein des applications Vue. Vous définissez les messages pour chaque paramètre régional, vous les appelez par clé dans vos modèles, et la bibliothèque se charge de formater les formes plurielles, les dates et les nombres. En revanche, elle ne traduit rien : les messages de chaque langue doivent être fournis par vous, vos traducteurs ou un système de gestion de la traduction (TMS). `gt-vue` de General Translation affiche les traductions de la même manière, mais General Translation les génère en plus à partir du texte que vous écrivez directement dans vos modèles.

## Les points forts de vue-i18n

* **Maturité.** vue-i18n est disponible sur npm depuis 2014. [La version 11 est la branche maintenue](https://vue-i18n.intlify.dev/guide/maintenance), et la version 12 est en alpha.
* **Nuxt.** Le [module `@nuxtjs/i18n` s&#39;appuie sur vue-i18n 11](https://i18n.nuxtjs.org/docs/getting-started) et ajoute des routes préfixées par le paramètre régional, des chemins localisés, la détection de la langue du navigateur, le chargement différé des traductions et des balises SEO comme les variantes localisées hreflang.
* **Formatage et texte enrichi.** `datetimeFormats` et `numberFormats` acceptent des options `Intl`, et le [composant `<i18n-t>`](https://vue-i18n.intlify.dev/guide/advanced/component) permet d&#39;insérer des éléments dans un message traduit sans recourir à `v-html`.
* **Messages au plus près des composants.** Avec `@intlify/unplugin-vue-i18n`, un [bloc `<i18n>`](https://vue-i18n.intlify.dev/guide/advanced/sfc) permet de conserver les messages d&#39;un composant directement dans son composant monofichier.
* **Outillage.** Le [plugin ESLint officiel](https://eslint-plugin-vue-i18n.intlify.dev/rules/) signale le texte brut dans les modèles ainsi que les clés manquantes ou inutilisées.

## Ce que vue-i18n laisse à votre charge

Voici une petite boîte de réception construite avec la Composition API de vue-i18n. Chaque chaîne de caractères se voit attribuer une clé, et le texte anglais est stocké dans un fichier de messages :

```json title="locales/en.json"
{
  "inbox": {
    "heading": "Inbox",
    "unread": "You have {n} unread message | You have {n} unread messages"
  }
}
```

```vue title="Inbox.vue"
<script setup>
import { useI18n } from 'vue-i18n'

defineProps({ count: { type: Number, required: true } })
const { t } = useI18n()
</script>

<template>
  <section>
    <h1>{{ t('inbox.heading') }}</h1>
    <p>{{ t('inbox.unread', count) }}</p>
  </section>
</template>
```

Chaque langue cible nécessite des messages traduits, fournis par votre équipe ou par un service de traduction. Pour cet exemple, deux détails d&#39;implémentation sont importants :

* **Règles de pluriel.** La règle par défaut de vue-i18n 11 sélectionne les formes selon leur position. Le polonais utilise les catégories `one`, `few`, `many` et `other` ; configurez donc une [fonction `pluralRules` personnalisée](https://github.com/intlify/vue-i18n/blob/master/docs/guide/v11/essentials/pluralization.md) pour associer chaque nombre à la forme traduite correspondante. vue-i18n 12, encore en alpha, [passe à `Intl.PluralRules`](https://github.com/intlify/vue-i18n/releases/tag/v12.0.0-alpha.4).
* **Nombres dans les messages.** Le `{n}` d&#39;un message au pluriel n&#39;est pas formaté selon le paramètre régional : 12345 s&#39;affiche donc « 12345 » en espagnol au lieu de « 12.345 », à moins de transmettre une valeur déjà formatée.

## Modèles intégrés avec traductions générées

`gt-vue` remplit le même rôle que vue-i18n. Il affiche les messages de chaque paramètre régional, sélectionne les formes du pluriel selon les règles CLDR propres à chaque paramètre régional, et formate les nombres, les devises et les dates avec [`<Num>`](/docs/vue/reference/components/num), [`<Currency>`](/docs/vue/reference/components/currency) et [`<DateTime>`](/docs/vue/reference/components/datetime). Mais General Translation va plus loin que vue-i18n : il génère les traductions. Voici la même boîte de réception, avec le texte intégré :

```vue title="Inbox.vue"
<script setup>
import { Num, Plural, T } from 'gt-vue'

defineProps({ count: { type: Number, required: true } })
</script>

<template>
  <section>
    <T><h1>Inbox</h1></T>
    <p>
      <T>
        <Plural :n="count">
          <template #singular>You have <Num :value="count" /> unread message</template>
          <template #plural>You have <Num :value="count" /> unread messages</template>
        </Plural>
      </T>
    </p>
  </section>
</template>
```

[`npx gt translate`](/docs/cli/reference/commands/translate) analyse vos modèles, envoie chaque bloc [`<T>`](/docs/vue/reference/components/t) avec sa structure à l&#39;API de General Translation, puis génère un catalogue pour chaque paramètre régional cible. Les slots `singular` et `plural` fournissent le texte source à partir duquel sont produites les formes de la langue cible. [`<Plural>`](/docs/vue/reference/components/plural) sélectionne la forme appropriée selon les règles du paramètre régional, et [`<Num>`](/docs/vue/reference/components/num) formate le nombre : 12,345 en anglais, 12.345 en espagnol et 12 345 en polonais.

L&#39;exemple utilise `gt-vue` 0.1.22 avec Vue 3.3 ou une version ultérieure ; le [Démarrage rapide Vue](/docs/vue/quickstart) explique la configuration initiale du plugin et du chargeur de catalogues. Votre équipe peut affiner le texte généré dans le [tableau de bord](/docs/platform/dashboard/guides/reviewing-translations), tandis que [les termes de glossaire partagés et les instructions personnalisées](/docs/platform/dashboard/guides/defining-context-for-translations) garantissent une terminologie cohérente d&#39;un projet à l&#39;autre.

## vue-i18n et General Translation en un coup d&#39;œil

| Fonctionnalité                  | vue-i18n                                                                                                                 | General Translation (`gt-vue`)                                                                                              |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
| Rédaction des textes            | Clés dans un fichier de messages ou un bloc `<i18n>` par paramètre régional                                              | Intégrés aux modèles, dans [`<T>`](/docs/vue/reference/components/t)                                                        |
| Traduction de votre contenu     | Non                                                                                                                      | Oui, avec [`npx gt translate`](/docs/cli/reference/commands/translate)                                                      |
| Formes du pluriel               | Formes séparées par une barre verticale ; la version 11 exige une règle personnalisée pour des langues comme le polonais | Slots [`<Plural>`](/docs/vue/reference/components/plural) sélectionnés selon les règles CLDR pour chaque paramètre régional |
| Nombres dans les messages       | Formatés uniquement si vous transmettez une valeur déjà formatée                                                         | [`<Num>`](/docs/vue/reference/components/num) les formate pour chaque paramètre régional                                    |
| Intégration à l&#39;application | Plugin Vue ; `@nuxtjs/i18n` ajoute le routage Nuxt, la détection de la langue et les balises SEO                         | Plugin Vue avec changement réactif de paramètre régional et chargement du catalogue                                         |

Conservez vue-i18n si vous comptez sur `@nuxtjs/i18n` pour le routage Nuxt et le SEO, ou si vous disposez déjà d&#39;un workflow de catalogue que vous souhaitez conserver. Choisissez General Translation pour garder des textes lisibles dans vos modèles Vue, générer les traductions lors de la compilation et permettre aux relecteurs de les modifier dans le tableau de bord.

## Migrer depuis vue-i18n

Migrez un composant à la fois : remplacez chaque recherche par clé par son texte anglais placé dans [`<T>`](/docs/vue/reference/components/t), et convertissez les messages au pluriel séparés par des barres verticales en slots `singular` et `plural` dans [`<Plural>`](/docs/vue/reference/components/plural), comme dans l&#39;exemple ci-dessus. Conservez vue-i18n et ses catalogues déjà relus pour les composants qui n&#39;ont pas encore été migrés. Configurez `gt-vue` en suivant le [Démarrage rapide Vue](/docs/vue/quickstart), puis exécutez [`npx gt translate`](/docs/cli/reference/commands/translate) avant la compilation.

## Pourquoi vue-i18n affiche-t-il la mauvaise forme du pluriel en polonais ?

Dans vue-i18n 11, configurez une fonction `pluralRules` qui associe les catégories du polonais aux positions correspondantes dans votre message. Par exemple, 1 sélectionne `one`, 2 et 22 sélectionnent `few`, et 5 sélectionne `many`. Avec General Translation, l&#39;exemple intégré fournit la formulation source, le service génère les formes traduites et [`<Plural>`](/docs/vue/reference/components/plural) se charge de sélectionner la bonne.

## Points clés

* vue-i18n est un plugin i18n mature, bien intégré à Nuxt, mais il ne traduit rien par lui-même, et la version 11 exige une règle de pluriel personnalisée pour des langues comme le polonais.
* La CLI de General Translation génère les traductions à partir de blocs [`<T>`](/docs/vue/reference/components/t) intégrés ; `gt-vue` les affiche en gérant la sélection du pluriel et le formatage des nombres propres à chaque paramètre régional.
* Conservez vue-i18n si vous disposez déjà d&#39;un workflow Nuxt ou à base de catalogues bien établi. Choisissez `gt-vue` pour ne plus avoir à maintenir des fichiers sources à clés.

## Related questions

- [General Translation vs i18next, react-intl et next-intl : quelle bibliothèque d’i18n choisir ?](https://generaltranslation.com/fr/kb/general-translation-vs-i18n-libraries.mdx): 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.
- [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.
- [General Translation ou Lingui : lequel choisir ?](https://generaltranslation.com/fr/kb/general-translation-vs-lingui.mdx): Choisissez General Translation pour conserver vos textes intégrés au code comme avec Lingui, tout en générant les traductions à partir de la structure de votre JSX comme contexte. Lingui extrait les messages intégrés dans des catalogues que vos traducteurs ou un service connecté se chargent de traduire. La CLI de General Translation met à jour les traductions au fil de l’évolution de votre code, et votre équipe les relit dans le tableau de bord.
- [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.
- [Peut-on faire de l’i18n sans fichiers de traduction ?](https://generaltranslation.com/fr/kb/i18n-without-translation-files.mdx): Oui. Avec gt-react ou gt-next, le contenu reste intégré dans vos composants, à l’intérieur d’un composant `<T>`, et les traductions sont générées lors du build. Il n’y a donc ni clés ni fichiers JSON par paramètre régional à écrire et à garder synchronisés.

## Previous and next questions

- Previous question: [General Translation ou Tolgee : lequel choisir ?](https://generaltranslation.com/fr/kb/general-translation-vs-tolgee.mdx)
- Next question: [General Translation ou Weblate : lequel choisir ?](https://generaltranslation.com/fr/kb/general-translation-vs-weblate.mdx)

## Sitemap

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