# General Translation Knowledge Base: General Translation vs. i18n-tasks: quale scegliere?
URL: https://generaltranslation.com/it/kb/general-translation-vs-i18n-tasks.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: i18n-tasks è una gem Ruby che individua le chiavi Rails I18n mancanti e inutilizzate, riordina i file delle impostazioni regionali e può compilare le chiavi mancanti tramite Google Translate, DeepL, OpenAI, Yandex o watsonx. General Translation traduce interi file delle impostazioni regionali con il tuo Glossario, i prompt personalizzati e la revisione nella dashboard. Svolgono compiti diversi e molti team possono usarli entrambi.
Category: Strumenti per il flusso di lavoro
Last updated: 2026-10-16
Authors: Kevin Wu, Jackie Chen
Published: 2026-10-16

i18n-tasks è uno strumento da riga di comando per le app Ruby che usano la gem i18n, quindi tutte le app Rails. Analizza il codice alla ricerca di chiamate come `t(".title")`, le confronta con i file delle impostazioni regionali e segnala le chiavi mancanti o inutilizzate; inoltre, il comando `translate-missing` colma le lacune tramite un servizio di traduzione automatica di cui fornisci tu la chiave. Controlla le traduzioni e può tradurre automaticamente una chiave mancante, ma non le mantiene aggiornate quando il testo inglese cambia. General Translation, invece, si occupa della traduzione vera e propria: la sua CLI genera ogni file delle impostazioni regionali a partire dalla sorgente inglese, applicando il tuo Glossario e i prompt personalizzati. Più che farsi concorrenza, quindi, i due strumenti si completano.

## Cosa fa bene i18n-tasks

* **Individua nel codice le chiavi mancanti e inutilizzate.** [Uno scanner AST legge i file `.rb` e `.html.erb`](https://github.com/glebm/i18n-tasks#features--limitations) (mentre uno scanner basato su espressioni regolari copre formati come HAML), risolve le chiavi relative come `t(".title")` e segnala le chiavi usate nel codice ma assenti in un&#39;impostazione regionale, oppure presenti ma mai utilizzate.
* **Controlli che tengono conto dei plurali.** Con le regole del plurale di rails-i18n, [`missing` segnala le impostazioni regionali prive di una forma CLDR](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md), come `few` e `many` in polacco.
* **Pensato per la CI.** `missing`, `unused` e gli altri controlli terminano con stato 1 quando rilevano problemi, e la gem include [modelli per RSpec e Minitest](https://github.com/glebm/i18n-tasks/tree/main/templates) che fanno fallire la suite di test se ci sono chiavi mancanti o inutilizzate.
* **Manutenzione dei file.** [`normalize` ordina le chiavi](https://github.com/glebm/i18n-tasks#normalize) (e, con `-p`, le sposta nei file assegnati dalla config), `mv` e `rm` rinominano o eliminano le chiavi in tutte le impostazioni regionali, `find` mostra dove viene usata una chiave e `check-consistent-interpolations` individua un `%{count}` rinominato o andato perso nella traduzione.
* **Cinque backend di traduzione.** [`translate-missing` funziona con Google Translate, DeepL, Yandex, OpenAI e IBM watsonx](https://github.com/glebm/i18n-tasks#translation-backends). Puoi [impostare gli ID dei glossari e le opzioni di DeepL](https://github.com/glebm/i18n-tasks/blob/main/templates/config/i18n-tasks.yml), oppure il modello OpenAI (`gpt-4o-mini` per impostazione predefinita), il prompt di sistema e un prompt per ciascuna impostazione regionale. I segnaposto `%{...}` vengono sostituiti con token prima dell&#39;invio e ripristinati al ritorno.
* **Gratuito.** È [distribuito con licenza MIT (versione 1.1.2)](https://rubygems.org/gems/i18n-tasks); paghi direttamente ciascun provider di traduzione, di solito a carattere o a token.

## Cosa i18n-tasks lascia a te

Ecco l&#39;output di `missing` e `unused` su una piccola app Rails con file in inglese, polacco e spagnolo, in cui la vista della inbox usa una chiave che nessuno ha definito:

```text title="bundle exec i18n-tasks missing (excerpt)"
| Locale | Key                 | Value in other locales or source  |
|  all   | inbox.show.empty    | app/views/inbox/show.html.erb:3   |
|   es   | inbox.show.title    | en Inbox                          |
|   es   | inbox.show.unread   | en {"one" => "You have %{count} unread message.", ...} |
|   pl   | flash.saved         | en Saved.                         |
|   pl   | inbox.show.unread   | few, many                         |
```

```text title="bundle exec i18n-tasks unused"
| Locale | Key                 | Value    |
|   en   | inbox.show.archived | Archived |
```

Quel report è accurato e utile. Colmare le lacune, però, resta compito tuo:

* **Il backend Google invia solo i valori delle stringhe.** In un&#39;esecuzione con la chiamata di rete di quel backend simulata, `translate-missing es` ha inviato i valori riportati di seguito con i segnaposto mascherati, senza chiavi, file o vista.

  ```text
  ["Inbox", "You have X__0 unread message.", "You have X__0 unread messages.", "Archived"]
  ```

* **Le forme plurali ricalcano quelle dell&#39;inglese.** Per una chiave polacca del tutto mancante, ha scritto `one` e `other`, e l&#39;esecuzione successiva di `missing` ha segnalato `few, many`.

* **Il testo inglese modificato non viene ritradotto.** [`translate-missing` compila le chiavi che non esistono in un&#39;impostazione regionale](https://github.com/glebm/i18n-tasks#translate-missing-keys). Se modifichi una stringa inglese, le traduzioni esistenti restano invariate.

* **Una richiesta a Google non riuscita può comunque scrivere file.** Senza una chiave API Google impostata, `translate-missing --backend=google pl` ha avvisato che la porzione non era riuscita, ha segnalato due chiavi come tradotte, ha copiato i valori inglesi in `pl.yml` ed è terminato con codice 0. Quelle chiavi sono poi sparite da `missing`; solo `eq-base` (traduzioni identiche alla sorgente) le mostrava.

## Il ruolo di General Translation

General Translation si occupa di generare le traduzioni, mentre i18n-tasks verifica i cataloghi Rails. Configura la CLI `gt` in modo che punti al tuo file in inglese ed esegui [`npx gt translate`](/docs/cli/reference/commands/translate) in CI. Il comando genera i file per ogni impostazione regionale di destinazione e, nelle esecuzioni successive, riutilizza le traduzioni delle voci invariate e ritraduce quelle il cui testo inglese è cambiato. Ogni esecuzione applica il [Glossario e i prompt personalizzati](/docs/platform/dashboard/guides/defining-context-for-translations) del tuo progetto, così termini e tono restano coerenti in tutti i file, e il tuo team può [rivedere e modificare le traduzioni](/docs/platform/dashboard/guides/reviewing-translations) nella dashboard.

Continua a usare i18n-tasks per la scansione del codice sorgente Ruby e la convalida dei cataloghi. Usa la CLI Node.js di General Translation per generare le traduzioni e converti il YAML risultante nel formato di Rails con l&#39;impostazione regionale come radice, come mostrato in [General Translation vs. Rails I18n](/kb/general-translation-vs-rails-i18n). Adotta questo flusso di lavoro per i cataloghi in cui la struttura delle chiavi sorgente corrisponde a quella di destinazione.

## i18n-tasks e General Translation a confronto

| Funzionalità                | i18n-tasks                                                                         | General Translation                                                                      |
| --------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| Ruolo                       | Analizza il codice Ruby e individua le chiavi del catalogo mancanti o inutilizzate | Genera le traduzioni e le mantiene aggiornate quando il testo sorgente cambia            |
| Convalida dei plurali       | Verifica le categorie richieste per ogni impostazione regionale                    | Abbina la generazione ai controlli di i18n-tasks                                         |
| Traduzione automatica       | `translate-missing`, tramite un provider a tua scelta                              | [`npx gt translate`](/docs/cli/reference/commands/translate)                             |
| Contesto di traduzione      | Dipende dal backend: DeepL accetta ID di glossario, OpenAI accetta prompt          | Il contenuto e i metadati del file, più il Glossario e i prompt personalizzati assegnati |
| Quando l&#39;inglese cambia | Le traduzioni esistenti restano invariate                                          | Le voci modificate vengono ritradotte                                                    |
| Revisione                   | Diff di Git                                                                        | Dashboard e diff di Git                                                                  |
| Costo                       | Gem gratuita; il provider fattura per carattere o per token                        | [Traduzione a consumo](https://generaltranslation.com/pricing)                           |

Scegli solo i18n-tasks se i file delle impostazioni regionali vengono scritti dai traduttori e ti serve che la CI rilevi le chiavi mancanti e inutilizzate, oppure se ti basta una rapida bozza automatica per poche stringhe. Usa General Translation se vuoi che le traduzioni si aggiornino a ogni modifica del testo inglese, con una terminologia coerente e la revisione nella dashboard. Continua a usare i18n-tasks per l&#39;analisi del codice sorgente Rails e i controlli sul catalogo.

## Usare entrambi in CI

Usa la configurazione del catalogo inglese-spagnolo illustrata nell&#39;[integrazione con Rails](/kb/general-translation-vs-rails-i18n). Esegui prima la traduzione e la mappatura dei locale, poi usa i18n-tasks per verificare la completezza delle chiavi, le categorie di plurale e i segnaposto:

```bash
npx gt translate
ruby script/export_rails_locales.rb                     # esporta i cataloghi per Rails
bundle exec i18n-tasks missing                           # chiavi usate nel codice e forme plurali
bundle exec i18n-tasks unused
bundle exec i18n-tasks check-consistent-interpolations   # %{name} corrisponde al testo sorgente
```

Ogni comando `i18n-tasks` termina con stato 1 se rileva un problema, quindi il job fallisce prima che un file danneggiato venga sottoposto a merge. La CLI richiede un ID progetto e una chiave API con le autorizzazioni **Files &gt; Write** e **Translation queue &gt; Enabled**, da impostare rispettivamente come `GT_PROJECT_ID` e `GT_API_KEY`. (Vedi [Configurare la CLI](/docs/cli/guides/configuring#credentials).)

## Punti chiave

* i18n-tasks individua le chiavi mancanti, inutilizzate e con forme plurali incomplete nelle app Rails.
* `translate-missing` compila le chiavi mancanti, ma non aggiorna le traduzioni esistenti quando modifichi la sorgente in inglese.
* General Translation traduce interi file di impostazioni regionali applicando il tuo Glossario e i tuoi prompt personalizzati, e li mantiene aggiornati a ogni modifica del testo inglese; eseguilo prima dei controlli di i18n-tasks nello stesso job di CI.

## Related questions

- [General Translation vs. Rails I18n: servono entrambi?](https://generaltranslation.com/it/kb/general-translation-vs-rails-i18n.mdx): Rails I18n recupera i messaggi e formatta date e numeri. General Translation genera le traduzioni, le mantiene aggiornate man mano che il testo in inglese cambia e offre al tuo team una Dashboard per la revisione. Usali insieme per distribuire cataloghi Rails tradotti a ogni rilascio.
- [General Translation o Mobility: quale scegliere?](https://generaltranslation.com/it/kb/general-translation-vs-mobility.mdx): Mobility salva nel tuo database gli attributi tradotti dei modelli. General Translation genera queste traduzioni tramite la sua API, usando il tuo Glossario e i tuoi prompt personalizzati. Usali insieme per tradurre schede prodotto, post e altri contenuti del database senza rinunciare ai tuoi modelli Rails.
- [Alternative a Google Translate: General Translation vs. Google Translate](https://generaltranslation.com/it/kb/general-translation-vs-google-translate.mdx): Google Translate è un modo rapido per tradurre testi occasionali, ma pubblicare un prodotto in un'altra lingua richiede anche che ogni stringa sia tradotta nel suo contesto, con termini coerenti, variabili e plurali corretti, una revisione e un processo di rilascio. General Translation comprende il contesto di ogni stringa nel tuo codice e automatizza l'intero flusso di lavoro di localizzazione, dal codice alla revisione fino a ogni rilascio.
- [Perché usare General Translation invece di un TMS (Smartling, Lokalise, Phrase, Crowdin o Transifex)?](https://generaltranslation.com/it/kb/general-translation-vs-tms.mdx): Un sistema di gestione delle traduzioni (TMS) come Smartling, Lokalise, Phrase, Crowdin o Transifex coordina i traduttori, ma gli sviluppatori devono comunque estrarre le stringhe, inviarle, attendere le traduzioni e reintegrarle nel prodotto. General Translation traduce i contenuti direttamente nel tuo codice insieme al loro contesto, distribuisce tutte le lingue a ogni rilascio e si basa su librerie open source, senza vendor lock-in.
- [Qual è il miglior software di localizzazione per gli sviluppatori?](https://generaltranslation.com/it/kb/best-localization-software.mdx): Cerca un unico sistema che copra l'intera pipeline, dalla libreria i18n nel tuo codice fino alla traduzione e alla consegna, invece di mettere insieme una libreria, un sistema di gestione delle traduzioni e un fornitore di traduzioni separati.

## Previous and next questions

- Previous question: [General Translation vs. GNU gettext: servono entrambi?](https://generaltranslation.com/it/kb/general-translation-vs-gettext.mdx)
- Next question: [General Translation vs. i18next, react-intl e next-intl: quale libreria i18n scegliere?](https://generaltranslation.com/it/kb/general-translation-vs-i18n-libraries.mdx)

## Sitemap

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