# General Translation Knowledge Base: General Translation vs. vue-i18n: quale scegliere?
URL: https://generaltranslation.com/it/kb/general-translation-vs-vue-i18n.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: General Translation consente ai team Vue di scrivere il testo sorgente direttamente nei modelli e di generare le traduzioni con la CLI. Il suo plugin gt-vue renderizza questi contenuti con una formattazione locale-aware di plurali e numeri. Sceglilo per eliminare la manutenzione dei file sorgente basati su chiavi; vue-i18n resta una scelta valida per i team che usano il modulo i18n di Nuxt e un flusso di lavoro consolidato basato su cataloghi.
Category: Internazionalizzazione
Last updated: 2026-10-16
Authors: Kevin Wu, Jackie Chen
Published: 2026-10-16

vue-i18n renderizza i messaggi nella lingua dell&#39;utente nelle app Vue. Definisci i messaggi per ogni impostazione regionale, li richiami tramite chiave nei modelli e la libreria si occupa di formattare plurali, date e numeri. Però non traduce nulla: i messaggi in ogni lingua devono provenire da te, dai tuoi traduttori o da un sistema di gestione delle traduzioni (TMS). Anche `gt-vue` di General Translation renderizza le traduzioni allo stesso modo, ma in più General Translation le genera a partire dal testo che scrivi inline nei modelli.

## Cosa fa bene vue-i18n

* **Maturità.** vue-i18n è disponibile su npm dal 2014. [La versione 11 è quella attualmente mantenuta](https://vue-i18n.intlify.dev/guide/maintenance), mentre la versione 12 è in alpha.
* **Nuxt.** Il [modulo `@nuxtjs/i18n` si basa su vue-i18n 11](https://i18n.nuxtjs.org/docs/getting-started) e aggiunge route con prefisso dell&#39;impostazione regionale, percorsi localizzati, rilevamento della lingua del browser, caricamento lazy delle traduzioni e tag SEO come gli alternate hreflang.
* **Formattazione e testo ricco.** `datetimeFormats` e `numberFormats` accettano opzioni `Intl`, e il [componente `<i18n-t>`](https://vue-i18n.intlify.dev/guide/advanced/component) inserisce elementi all&#39;interno di un messaggio tradotto senza ricorrere a `v-html`.
* **Messaggi accanto ai componenti.** Con `@intlify/unplugin-vue-i18n`, un [blocco `<i18n>`](https://vue-i18n.intlify.dev/guide/advanced/sfc) mantiene i messaggi di un componente all&#39;interno del relativo single-file component.
* **Strumenti.** Il [plugin ESLint ufficiale](https://eslint-plugin-vue-i18n.intlify.dev/rules/) segnala il testo non tradotto nei modelli e le chiavi mancanti o inutilizzate.

## Cosa vue-i18n lascia a carico tuo

Ecco una piccola casella di posta realizzata con la Composition API di vue-i18n. Ogni stringa ha una chiave, e il testo in inglese risiede in un file di messaggi:

```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>
```

Ogni lingua di destinazione richiede messaggi tradotti, forniti dal tuo team o da un servizio di traduzione. Ai fini dell&#39;esempio, contano due dettagli di implementazione:

* **Regole del plurale.** In vue-i18n 11, la regola predefinita seleziona le forme in base alla posizione. Il polacco usa le categorie `one`, `few`, `many` e `other`, quindi configura una [funzione `pluralRules` personalizzata](https://github.com/intlify/vue-i18n/blob/master/docs/guide/v11/essentials/pluralization.md) che associ i conteggi alle forme tradotte. vue-i18n 12, ancora in fase alpha, [adotta `Intl.PluralRules`](https://github.com/intlify/vue-i18n/releases/tag/v12.0.0-alpha.4).
* **Numeri all&#39;interno dei messaggi.** Il segnaposto `{n}` in un messaggio plurale non viene formattato in base all&#39;impostazione regionale, quindi in spagnolo 12345 viene renderizzato come &quot;12345&quot; anziché &quot;12.345&quot;, a meno che non passi un valore già formattato.

## Modelli inline con traduzioni generate

`gt-vue` fa lo stesso lavoro di vue-i18n: renderizza i messaggi di ogni impostazione regionale, sceglie le forme plurali in base alle regole CLDR di ciascuna impostazione regionale e formatta numeri, valute e date con [`<Num>`](/docs/vue/reference/components/num), [`<Currency>`](/docs/vue/reference/components/currency) e [`<DateTime>`](/docs/vue/reference/components/datetime). Ma General Translation va oltre ciò che fa vue-i18n: genera anche le traduzioni. Ecco la stessa casella di posta, con i testi inline:

```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) analizza i tuoi modelli, invia ogni blocco [`<T>`](/docs/vue/reference/components/t) insieme alla sua struttura all&#39;API di General Translation e genera un catalogo per ogni impostazione regionale di destinazione. Gli slot `singular` e `plural` forniscono il testo sorgente per le forme della lingua di destinazione. [`<Plural>`](/docs/vue/reference/components/plural) seleziona queste forme in base alle regole dell&#39;impostazione regionale, mentre [`<Num>`](/docs/vue/reference/components/num) formatta il conteggio: 12,345 in inglese, 12.345 in spagnolo e 12 345 in polacco.

L&#39;esempio utilizza `gt-vue` 0.1.22 con Vue 3.3 o versioni successive; l&#39;[Avvio rapido per Vue](/docs/vue/quickstart) spiega come configurare il plugin e il loader del catalogo. Il tuo team può rifinire il testo generato nella [dashboard](/docs/platform/dashboard/guides/reviewing-translations), mentre i [termini condivisi del Glossario e i prompt personalizzati](/docs/platform/dashboard/guides/defining-context-for-translations) garantiscono una terminologia coerente in tutti i progetti.

## vue-i18n e General Translation a confronto

| Funzionalità               | vue-i18n                                                                                                            | General Translation (`gt-vue`)                                                                                                   |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| Come si scrivono i testi   | Chiavi in un file di messaggi o in un blocco `<i18n>` per ogni impostazione regionale                               | Inline nei modelli, all&#39;interno di [`<T>`](/docs/vue/reference/components/t)                                                |
| Traduce i tuoi contenuti   | No                                                                                                                  | Sì, con [`npx gt translate`](/docs/cli/reference/commands/translate)                                                             |
| Forme plurali              | Forme separate da una barra verticale; la versione 11 richiede una regola personalizzata per lingue come il polacco | Slot di [`<Plural>`](/docs/vue/reference/components/plural) selezionati in base alle regole CLDR per ogni impostazione regionale |
| Numeri nei messaggi        | Formattati solo se si passa un valore già formattato                                                                | [`<Num>`](/docs/vue/reference/components/num) formatta in base a ogni impostazione regionale                                     |
| Integrazione con l&#39;app | Plugin Vue; `@nuxtjs/i18n` aggiunge routing Nuxt, rilevamento della lingua e tag SEO                                | Plugin Vue con cambio reattivo dell&#39;impostazione regionale e caricamento del catalogo                                        |

Continua a usare vue-i18n se ti affidi a `@nuxtjs/i18n` per il routing Nuxt e la SEO, oppure se hai già un flusso di lavoro basato su cataloghi che vuoi mantenere. Scegli General Translation per mantenere i testi leggibili nei modelli Vue, generare le traduzioni durante la build e permettere ai revisori di modificarle nella Dashboard.

## Migrare da vue-i18n

Migra un componente alla volta: sostituisci ogni ricerca per chiave con il corrispondente testo in inglese all&#39;interno di [`<T>`](/docs/vue/reference/components/t) e converti i messaggi plurali separati da barra verticale negli slot `singular` e `plural` di [`<Plural>`](/docs/vue/reference/components/plural), come nell&#39;esempio precedente. Per i componenti non ancora migrati, continua a usare vue-i18n e i relativi cataloghi già revisionati. Configura `gt-vue` seguendo l&#39;[Avvio rapido per Vue](/docs/vue/quickstart), quindi esegui [`npx gt translate`](/docs/cli/reference/commands/translate) prima della build.

## Perché vue-i18n mostra la forma plurale sbagliata in polacco?

In vue-i18n 11, configura una funzione `pluralRules` che associ le categorie plurali del polacco alle posizioni nel tuo messaggio. Ad esempio, 1 seleziona `one`, 2 e 22 selezionano `few` e 5 seleziona `many`. Con General Translation, l&#39;esempio inline fornisce il testo sorgente, il servizio genera le forme tradotte e [`<Plural>`](/docs/vue/reference/components/plural) si occupa di selezionare quella corretta.

## Punti chiave

* vue-i18n è un plugin di i18n maturo con un ottimo supporto per Nuxt, ma non traduce nulla e la versione 11 richiede una regola del plurale personalizzata per lingue come il polacco.
* La CLI di General Translation genera le traduzioni a partire da blocchi [`<T>`](/docs/vue/reference/components/t) inline; `gt-vue` le renderizza applicando la selezione del plurale e la formattazione dei numeri per ciascuna impostazione regionale.
* Resta su vue-i18n se hai già un flusso di lavoro consolidato basato su Nuxt o su cataloghi. Scegli `gt-vue` se non vuoi più mantenere file sorgente basati su chiavi.

## Related questions

- [General Translation vs. i18next, react-intl e next-intl: quale libreria i18n scegliere?](https://generaltranslation.com/it/kb/general-translation-vs-i18n-libraries.mdx): Le librerie open source come i18next, react-intl e next-intl non traducono nulla. Si limitano a visualizzare le traduzioni che fornisci in un file di catalogo per ciascuna lingua, scritte da te, dai tuoi traduttori o da un servizio esterno. Anche le librerie di General Translation sono open source e svolgono lo stesso compito, ma General Translation si occupa anche della traduzione, usando il tuo codice come contesto.
- [Alternative a i18next: General Translation vs. i18next](https://generaltranslation.com/it/kb/general-translation-vs-i18next.mdx): Scegli General Translation per mantenere i testi inline nei componenti React e generare le traduzioni sfruttando la struttura JSX e il contesto del prodotto. In alternativa, puoi continuare a usare i18next e affidarti a General Translation per tradurre i cataloghi esistenti. i18next si occupa del rendering dei messaggi e della selezione dei plurali, mentre la generazione delle traduzioni è affidata a un servizio separato.
- [General Translation o Lingui: quale scegliere?](https://generaltranslation.com/it/kb/general-translation-vs-lingui.mdx): Scegli General Translation per mantenere i testi inline come con Lingui e generare le traduzioni usando la struttura JSX come contesto. Lingui estrae i messaggi inline in cataloghi che i tuoi traduttori o un servizio collegato dovranno tradurre. La CLI di General Translation aggiorna le traduzioni man mano che il codice cambia e il tuo team le revisiona nella Dashboard.
- [Alternative a react-intl: General Translation o react-intl](https://generaltranslation.com/it/kb/general-translation-vs-react-intl.mdx): General Translation consente ai team React di mantenere la sintassi dei messaggi ICU, aggiungendo la generazione delle traduzioni, una terminologia condivisa e la revisione nella Dashboard. react-intl fornisce la formattazione e gli strumenti di FormatJS per la gestione dei cataloghi; General Translation, invece, produce anche le traduzioni.
- [Posso fare i18n senza file di traduzione?](https://generaltranslation.com/it/kb/i18n-without-translation-files.mdx): Sì. Con gt-react o gt-next, i contenuti restano inline nei tuoi componenti, all'interno di un componente `<T>`, e le traduzioni vengono generate come output in fase di compilazione. Non ci sono quindi chiavi né file JSON per ogni impostazione regionale da scrivere e mantenere sincronizzati.

## Previous and next questions

- Previous question: [General Translation vs. Tolgee: quale scegliere?](https://generaltranslation.com/it/kb/general-translation-vs-tolgee.mdx)
- Next question: [General Translation vs. Weblate: quale scegliere?](https://generaltranslation.com/it/kb/general-translation-vs-weblate.mdx)

## Sitemap

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