# General Translation Knowledge Base: General Translation vs. Rails I18n: servono entrambi?
URL: https://generaltranslation.com/it/kb/general-translation-vs-rails-i18n.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 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.
Category: Internazionalizzazione
Last updated: 2026-10-16
Authors: Kevin Wu, Jackie Chen
Published: 2026-10-16

Rails I18n è l&#39;API di internazionalizzazione integrata in Ruby on Rails: chiami `t` e `l` nelle view e nei controller, e Rails cerca il messaggio per l&#39;impostazione regionale corrente nei file YAML in `config/locales`. Si occupa di renderizzare le traduzioni, ma lascia a te, ai tuoi traduttori o a un servizio esterno il compito di produrle. General Translation scrive queste traduzioni a partire dal tuo testo sorgente in inglese, rispettando la terminologia del tuo prodotto. View, controller e chiamate a Rails I18n restano invariati.

## Cosa fa bene Rails I18n

* **Integrato.** Rails [carica automaticamente ogni file `.yml` e `.rb` presente in `config/locales`](https://guides.rubyonrails.org/i18n.html#configuring-the-load-paths-and-default-locale). Ogni file YAML ha come radice la chiave della propria impostazione regionale (`en:`, `es:`), quindi un&#39;app può suddividere le traduzioni su più file.
* **Ricerca lazy.** In `app/views/inbox/show.html.erb`, [`t(".title")` si risolve in `inbox.show.title`](https://guides.rubyonrails.org/i18n.html#lazy-lookup), mentre in un&#39;azione di un controller `t(".success")` si risolve in base al nome del controller e dell&#39;azione: in questo modo le chiavi rispecchiano la struttura dei tuoi file.
* **Interpolazione e HTML sicuro.** I messaggi accettano valori con nome come `%{name}`, e [le chiavi che terminano con `_html` vengono renderizzate senza escape](https://guides.rubyonrails.org/i18n.html#using-safe-html-translations), mentre i valori interpolati al loro interno vengono comunque sottoposti a escape.
* **Fallback e limiti sulle impostazioni regionali.** Le nuove app Rails impostano `config.i18n.fallbacks = true` in produzione, così una chiave mancante viene renderizzata nella lingua predefinita, e [`config.i18n.available_locales` limita le impostazioni regionali accettate dall&#39;app](https://guides.rubyonrails.org/configuring.html#config-i18n-available-locales).
* **Dati delle impostazioni locali dalla community.** La gem [rails-i18n](https://github.com/svenfuchs/rails-i18n) (8.1.0, MIT) aggiunge formati di data, ora e numero, messaggi di errore di Active Record e regole del plurale CLDR per oltre 100 impostazioni regionali.
* **Nessuna registrazione richiesta.** Si tratta di semplice Ruby e YAML, e la [guida di Rails](https://guides.rubyonrails.org/i18n.html) lo copre dall&#39;inizio alla fine.

## Cosa Rails I18n lascia a carico tuo

Rails I18n conosce solo i messaggi che gli fornisci. Ecco una view della posta in arrivo con i relativi messaggi in inglese:

```yaml title="config/locales/en.yml"
en:
  inbox:
    show:
      title: "Inbox"
      unread:
        one: "You have %{count} unread message."
        other: "You have %{count} unread messages."
```

```erb title="app/views/inbox/show.html.erb"
<h1><%= t(".title") %></h1>
<p><%= t(".unread", count: @count) %></p>
```

Selezionare lo spagnolo non traduce questo file. Con i fallback all&#39;inglese abilitati, chi legge in spagnolo continua a vedere &quot;Inbox&quot; e &quot;You have 3 unread messages.&quot; Rails ha bisogno di un catalogo spagnolo per poter mostrare testi in spagnolo. Ogni messaggio inglese nuovo o modificato comporta lo stesso lavoro per ciascuna lingua.

La gem [rails-i18n](https://github.com/svenfuchs/rails-i18n) fornisce i formati delle impostazioni regionali e le regole del plurale. [i18n-tasks](/kb/general-translation-vs-i18n-tasks) individua le chiavi e le forme plurali mancanti. General Translation fornisce i messaggi tradotti di cui questi strumenti hanno bisogno.

## Tradurre i file delle impostazioni regionali di Rails con General Translation

Continua a usare Rails I18n per le ricerche e affida a General Translation la scrittura degli altri file delle impostazioni regionali. La CLI `gt` gira su Node.js, traduce i file YAML e mantiene invariate le chiavi. In questo esempio dall&#39;inglese allo spagnolo, inserisci i messaggi in `translations/en.yml` senza la chiave esterna `en:`:

```yaml title="translations/en.yml"
inbox:
  show:
    title: "Inbox"
    unread:
      one: "You have %{count} unread message."
      other: "You have %{count} unread messages."
```

Configura `gt.config.json` in modo che punti a questi file di lavoro. Un breve passaggio di esportazione aggiunge le chiavi delle impostazioni regionali di Rails e genera i cataloghi caricati dall&#39;app:

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": [
    "es"
  ],
  "files": {
    "yaml": {
      "include": [
        "translations/[locale].yml"
      ]
    }
  }
}
```

Imposta `GT_PROJECT_ID` e `GT_API_KEY` come descritto in [Generare le traduzioni](/docs/cli/guides/generating-translations). Se hai già delle traduzioni per questo catalogo, inseriscile in `translations/es.yml` senza la chiave radice `es:` ed esegui [`npx gt upload`](/docs/cli/reference/commands/upload) prima di generare nuove traduzioni.

```ruby title="script/export_rails_locales.rb"
require "json"
require "yaml"
require "fileutils"

config = JSON.parse(File.read("gt.config.json"))
locales = ([config.fetch("defaultLocale")] + config.fetch("locales")).uniq
catalogs = locales.to_h do |locale|
  messages = YAML.safe_load_file("translations/#{locale}.yml", aliases: true)
  raise "Expected a message map for #{locale}" unless messages.is_a?(Hash)
  [locale, { locale => messages }.to_yaml]
end

FileUtils.mkdir_p("config/locales")
catalogs.each do |locale, catalog|
  File.write("config/locales/#{locale}.yml", catalog)
end
```

```bash
npx gt translate && ruby script/export_rails_locales.rb
```

L&#39;esportazione genera i file `config/locales/en.yml` e `config/locales/es.yml` di questo catalogo. Continua a modificare i file di lavoro in `translations/`: l&#39;app carica le copie esportate. Prima della successiva esecuzione della traduzione, sincronizza le modifiche alle traduzioni locali con [`npx gt save-local`](/docs/cli/reference/commands/save-local).

General Translation traduce ogni file applicando il [Glossario e i prompt personalizzati](/docs/platform/dashboard/guides/defining-context-for-translations) del tuo progetto, così un nome di prodotto o un tono formale restano coerenti in tutti i file delle impostazioni regionali, e il tuo team può [rivedere e modificare le traduzioni](/docs/platform/dashboard/guides/reviewing-translations) nella dashboard. Le voci invariate riutilizzano le traduzioni precedenti, quindi, se esegui la CLI in CI a ogni merge, viene tradotto solo ciò che è cambiato.

Prima del rilascio, esegui `i18n-tasks missing` e `i18n-tasks check-consistent-interpolations` per verificare chiavi, forme plurali e segnaposto `%{count}` dei cataloghi esportati.

## Rails I18n e General Translation a confronto

| Funzionalità                                 | Rails I18n                                                              | General Translation                                                                     |
| -------------------------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Che cos&#39;è                                | Libreria Ruby per recuperare e formattare le traduzioni                 | Piattaforma di traduzione con una CLI, librerie per JavaScript e Python e una Dashboard |
| Renderizza le traduzioni in un&#39;app Rails | Sì, in view, controller e mailer                                        | Fornisce i cataloghi per le stesse chiamate a Rails I18n                                |
| Scrive le traduzioni                         | No                                                                      | Sì, file YAML con [`npx gt translate`](/docs/cli/reference/commands/translate)          |
| Regole del plurale                           | Regole inglesi per impostazione predefinita; regole CLDR con rails-i18n | Traduce le forme sorgente configurate; Rails le seleziona a Runtime                     |
| Coerenza tra i file                          | Affidata ai tuoi traduttori                                             | Glossario e prompt personalizzati applicati a ogni file                                 |
| Revisione                                    | Il tuo processo di pull request                                         | Dashboard e il tuo processo di pull request                                             |
| Costo                                        | Gratuito, MIT                                                           | [In base all&#39;utilizzo](https://generaltranslation.com/pricing)                      |

Usa solo Rails I18n se i file delle impostazioni regionali ti vengono già forniti da traduttori o da un fornitore, oppure se supporti una o due lingue e le modifichi a mano. Aggiungi General Translation se il testo inglese cambia spesso e vuoi che ogni file delle impostazioni regionali venga rigenerato in CI, con una terminologia coerente, senza dover attendere un intero ciclo di traduzione.

## Punti chiave

* Rails I18n renderizza le traduzioni da `config/locales` e formatta date e numeri; rails-i18n aggiunge le regole del plurale e i dati delle impostazioni locali. Nessuno dei due, però, scrive le traduzioni.
* General Translation traduce i file YAML applicando il tuo Glossario e i tuoi prompt personalizzati, e mantiene le traduzioni aggiornate a ogni modifica del testo inglese.
* Conserva i cataloghi modificabili in `translations/`, poi, dopo aver eseguito [`npx gt translate`](/docs/cli/reference/commands/translate), esportali nelle directory radice delle impostazioni regionali di Rails.

## Related questions

- [General Translation vs. i18n-tasks: quale scegliere?](https://generaltranslation.com/it/kb/general-translation-vs-i18n-tasks.mdx): 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.
- [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.
- [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.
- [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. nestjs-i18n: quale scegliere?](https://generaltranslation.com/it/kb/general-translation-vs-nestjs-i18n.mdx)
- Next question: [General Translation vs. Tolgee: quale scegliere?](https://generaltranslation.com/it/kb/general-translation-vs-tolgee.mdx)

## Sitemap

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