Vai al contenuto
11 giugno 20263 min readProduct

Un solo comando dalle stringhe hardcoded a un'app localizzata

Gli strumenti di coding IA hanno cambiato chi pubblica software. Un'app costruita in un pomeriggio con v0, Lovable, Bolt o Cursor sembra finita, finché qualcuno chiede una seconda lingua e ti accorgi che ogni stringa è hardcoded. Internazionalizzare a posteriori significava finora un weekend intero: avvolgere stringhe, cablare i18next, creare un progetto, aggiungere lingue, far girare file.

Ora è un solo comando:

npx i18next-cli localize

Il nuovo super-comando localize di i18next-cli 1.62 concatena l'intero percorso (rilevare, strumentare, estrarre, connettere a Locize, tradurre con l'IA, consegnare) e termina con un'app localizzata e funzionante.


Com'è un'esecuzione

$ npx i18next-cli localize
i18next-cli localize — from hardcoded strings to a localized app

[1/6] Detecting project…
      ✔ react + TypeScript
[2/6] Configuration…
      ✔ locales: en, de, fr, it
[3/6] Instrumenting code…
96/101 candidate string(s) instrumented (5 skipped).
[4/6] Extracting translation keys…
Translation keys extracted.
[5/6] Connecting to Locize…

  One manual step — in your browser:
    1. Sign up / log in
    2. Create a project. Your target languages (en, de, fr, it) are
       created automatically on the first sync.
    3. Copy your Project ID and an API key.

[6/6] Translating & delivering…
Synced to Locize with AI auto-translate requested.
      Waiting for AI translations to arrive…
        de: 96/96 (100%)
        fr: 96/96 (100%)
        it: 96/96 (100%)
All languages translated and downloaded.

 Done. Your app is localized.

Your AI translations come with confidence scores; low-confidence ones
are flagged for review in Locize.

Il passo 5 è l'unico momento manuale dell'intero flusso: registrarsi su Locize, creare un progetto, incollare due credenziali. Tutto il resto avviene automaticamente, inclusa la creazione delle lingue di destinazione. Se la tua configurazione o il tuo ambiente contengono già LOCIZE_PROJECTID/LOCIZE_API_KEY, anche quel passo scompare.


Cosa è appena successo

  1. Rilevamento: framework (React e Next.js nativamente), TypeScript, un'eventuale configurazione i18next esistente.
  2. Configurazione: usa il tuo i18next.config.ts, o avvia il wizard interattivo init se non esiste.
  3. Strumentazione: avvolge le stringhe hardcoded in chiamate t() e componenti <Trans>, iniettando useTranslation() dove serve. Interattiva di default: approvi ogni modifica. È il comando instrument, un assistente, non un compilatore.
  4. Estrazione: raccoglie ogni chiave nei tuoi file di locale.
  5. Connessione a Locize: registrazione guidata e nessuna configurazione manuale delle lingue, perché le lingue della tua configurazione vengono create automaticamente alla prima sincronizzazione (locize-cli ≥ 12.3, che alimenta i passi Locize).
  6. Traduzione e consegna: sincronizza con la traduzione automatica IA, attiva di default per i nuovi progetti e che usa il tuo glossario e il tuo styleguide come contesto. Il comando osserva poi l'arrivo delle traduzioni, le scarica e stampa lo snippet CDN di i18next-locize-backend, così le future correzioni di traduzione vanno online senza rideployare l'app.

Il progetto Locize dopo l'esecuzione: tutte e quattro le lingue al 100%, pubblicate automaticamente.

E poiché anche la Quality Estimation è attiva di default per i nuovi progetti, ogni traduzione IA arriva con un punteggio di confidenza; quelle a bassa confidenza vengono segnalate per la revisione invece di andare online in silenzio. E proprio in questa demo ha colto un caso reale:


Il tuo agente di coding IA può farlo per te

Le app per cui questo comando è stato costruito spesso sono state scritte da un agente. Perciò il flusso è disponibile anche come prompt:

npx i18next-cli localize --print-agent-prompt

Questo stampa istruzioni passo passo per Claude Code, Cursor o qualsiasi agente di coding, usando i singoli comandi della CLI (instrument --dry-run, extract, locize-sync, …) invece del super-comando interattivo. Il prompt è allineato alla versione della CLI installata, quindi non diverge mai da ciò che fa localize stesso. Incollalo nel tuo agente, fornisci le due credenziali Locize quando le chiede e rivedi il diff alla fine.


Limiti onesti

  • Rivedi il diff della strumentazione. La strumentazione è euristica e interattiva per una buona ragione: approva le modifiche stringa per stringa e aspettati di aggiustarne alcune (nomi di brand, etichette dinamiche). Un albero git non committato fa scattare prima una richiesta di conferma, e --dry-run mostra tutto in anteprima senza scrivere.
  • Next.js App Router: instrument inietta useTranslation(), che è solo client. Controlla i componenti server nel diff e aggiungi 'use client' o passali a un pattern t() lato server.
  • Gli stack non React degradano con grazia. La trasformazione copre React/JSX di serie; per Vue o Svelte aggiungi un plugin della community (i18next-cli-vue, i18next-cli-plugin-svelte). Senza plugin, il passo di strumentazione viene saltato con indicazioni, e il resto del flusso (estrazione → Locize → traduzione automatica) viene eseguito comunque.
  • La traduzione IA parte quando il progetto ha un abbonamento o quando è configurata la tua chiave di un provider IA/MT. La sincronizzazione in sé funziona in entrambi i casi, e rieseguire localize più tardi completa il lavoro: il comando è idempotente, i passi già completati vengono semplicemente saltati.

Per iniziare

Nella root del tuo progetto:

npx i18next-cli localize

Oppure fai prima un'anteprima con npx i18next-cli localize --dry-run. Il riferimento completo delle opzioni (modalità CI, --skip-instrument, namespace, …) è nel README di i18next-cli, e il lato Locize nella documentazione CLI.

Se hai rimandato la localizzazione per colpa dell'impianto idraulico: l'impianto non c'è più. Crea un account Locize gratuito ed esegui il comando.

Stanco di gestire le traduzioni a mano?

Locize è il backend di gestione delle traduzioni creato dal team di i18next: distribuzione via CDN, traduzione con AI, editing in-context, senza nuovi deploy.

Inizia la prova gratuita di 14 giorni