Se nel repository hai già configurato next-intl, react-i18next, i18next o Lingui — cartelle delle locale su disco, dipendenze in package.json, middleware o file di configurazione — non ti serve un altro strumento che finga di partire da zero. globalize.now è un’infrastruttura di localizzazione basata su IA. In modalità L1 (già internazionalizzata), il prodotto salta lo scaffolding distruttivo di setup e resta in modalità sincronizzazione: legge la lingua sorgente, confronta le altre locale a ogni push e apre pull request con le traduzioni mancanti. Questo articolo spiega cosa tocca questa modalità, cosa si rifiuta di toccare e cosa fare quando il rilevamento sbaglia.
Perché la maggior parte dei consigli su i18n presume che tu parta da zero?
La copy marketing degli strumenti i18n descrive ancora soprattutto il caso «greenfield»: nessuna libreria installata, nessun file delle locale, nessuna estrazione eseguita. La maggior parte delle codebase in produzione non si trova in questa situazione.
Nelle ultime settimane, tre sessioni iniziali non correlate hanno seguito lo stesso schema: il team ha provato i18n una volta, ha ottenuto qualcosa di funzionante solo a metà e si è fermato, perché rimuovere tutto e rifarlo sembrava peggio che convivere con il disordine.
Se ti riconosci in questa situazione, questo articolo è scritto per te.
Com'è davvero una codebase parzialmente internazionalizzata?
Questi pattern ricompaiono continuamente (dettagli anonimizzati):
- Un’app Next.js + next-intl in cui la maggior parte dei componenti usa
t(), ma le route più vecchie rilasciano ancora inglese hardcoded perché la prima fase della migrazione non è mai stata completata. - Un progetto React + i18next i cui file delle locale esistono, ma contengono solo valori in inglese: tradurre era sempre rimandato al prossimo trimestre.
- Un albero
messages/in cuien.jsonè completo ees.jsonè praticamente vuoto. - Un language switcher collegato al layout che a volte restituisce 404 perché il routing è stato migrato solo a metà.
Nessuno di questi progetti ha bisogno di ripartire da zero con globalize.now. Ha bisogno di finire il lavoro.
Quali segnali cerca globalize.now al primo run?
Il rilevamento avviene in due passaggi, non in uno.
Per prima cosa, indica a globalize.now il repository. Connetterlo nell’app esegue il rilevamento e la conversione una tantum al posto tuo. Se preferisci che sia il tuo agente a eseguire localmente questo passaggio, installa le skill: aggiunge alcuni file di playbook in .claude/skills/ e non modifica altro nel repository:
npx skills add globalize-now/globalize-skills
Poi dai un prompt al tuo agente — Claude Code, Cursor o Codex. L’agente legge le skill installate e le usa per scansionare il repository:
Set up localization for my project
È in questo secondo passaggio che il rilevamento viene eseguito davvero. L’agente cerca:
- Dipendenze
package.json:next-intl,react-i18next,i18next,@lingui/core,@lingui/react,@lingui/macroo qualsiasi plugini18next-*. - Cartelle delle locale:
messages/nella root del repository, una cartellalocales/osrc/i18n/con sottocartelle per locale. - File delle locale esistenti:
en.json,en.po,en.yml,en.yamlo il file della locale predefinita previsto dalla libreria. - Configurazione specifica del framework:
i18n.config.ts, middleware di next-intl,lingui.config.jso equivalenti.
Se sono presenti almeno due di questi segnali, il progetto viene trattato come L1 — già internazionalizzato — e il flusso di setup cambia diramazione invece di eseguire lo scaffolding completo per un progetto greenfield. Trovi maggiori dettagli nell’articolo del Centro assistenza sull’i18n esistente.
Cosa rifiuta di modificare la modalità L1?
È la parte che interessa davvero. In modalità L1, globalize.now non:
- Esegue l’ampio passaggio di estrazione delle stringhe che scansiona i componenti alla ricerca di literal hardcoded.
- Genera nuove chiavi di traduzione o riorganizza la struttura delle chiavi che hai già confermato con un commit.
- Crea lo scaffolding dei file delle locale per lingue che non hai ancora configurato.
- Inserisce un language switcher. Se ne hai già uno, resta lì. Se non ce l’hai, non ne aggiungiamo uno.
- Riscrive routing, middleware o configurazione del framework al posto tuo.
La configurazione i18n esistente resta tua. In questa modalità non la rifattorizziamo.
Cosa fa la modalità di sincronizzazione L1 dopo il rilevamento?
L1 mette la sincronizzazione al primo posto. Una volta completato il rilevamento:
- Leggiamo i file delle locale esistenti per capire la struttura attuale delle chiavi e quale lingua sia la source of truth.
- Connetti il repository GitHub tramite il CLI o la web app di globalize.now.
- A ogni push sul branch main, confrontiamo il file nella lingua sorgente con le altre locale. Le traduzioni mancanti vengono completate con output generato dall’IA, nel rispetto del glossario e della guida di stile che configuri.
- Arriva una pull request con i file delle locale aggiornati. Esamina e fai merge. Non facciamo mai merge al posto tuo.
Questo è il ciclo. Nessuna dashboard di traduzione da sorvegliare. Nessun export manuale. Nessun balletto tra formati di file.
Confronta questo flusso con il walkthrough L0 in Come aggiungo i18n a un’app Next.js creata con Cursor in 15 minuti?: stesso prodotto, percorso di ingresso diverso.
Cosa succede se solo una parte dell’interfaccia usa chiamate di traduzione?
È la situazione normale a metà migrazione: le nuove schermate usano t(), mentre quelle legacy lasciano ancora filtrare literal. Al di fuori della modalità di sincronizzazione, la pipeline delle skill tratta le stringhe già associate a chiavi come bloccate: si concentra sui literal non ancora collegati e preserva le chiavi esistenti. I team che rilasciano ogni settimana mentre sono a metà di questa migrazione sono l’utente «L1 misto» per eccellenza nei nostri log.
Per una storia completa di conversione eseguita da un agente su un albero complesso, consulta Cosa succede quando un agente IA internazionalizza un monorepo reale?.
Cosa devi fare se il flusso di setup ha creato comunque tutto lo scaffolding?
Stiamo rendendo più preciso il rilevamento, quindi il ramo sbagliato non dovrebbe attivarsi. Ma se npx skills add globalize-now/globalize-skills ha già prodotto un diff di oltre 100 file che riscrive la cartella delle locale, aggiunge uno switcher che non avevi richiesto o modifica il routing, non fare commit. Usa il widget per il feedback (in basso a destra) con l’elenco delle dipendenze package.json e una breve nota sulla struttura delle cartelle delle locale; possiamo instradare manualmente il repository in L1. Un flag CLI --existing-i18n self-service arriverà presto.
Per ripristinare la situazione sulla tua macchina bastano git restore . e, se necessario, git clean -fd. Non è stato fatto alcun push, nulla che riguardi la produzione si è rotto e l’agente ha toccato solo il tuo branch locale. Trovi il resoconto completo in globalize_skills ha apportato troppe modifiche — cos’è successo?.
Perché «abbiamo provato i18n e ci siamo bloccati» è ormai la storia più comune?
Non è uno slogan: è uno schema ricorrente. Tre sessioni indipendenti al primo contatto in sei settimane, tre versioni di «sì, ci abbiamo provato; adesso è un pasticcio». Un’estensione Chrome con decine di migliaia di utenti ha registrato un picco di traffico dalla Corea e attivato una migrazione a metà verso next-intl. Un’app creata con Lovable ha rotto la propria build aggiungendo il supporto multilingue ed è stata ripristinata. Un repo React + Vite creato con il vibe coding ha configurato i18next, compilato circa un terzo delle chiavi e poi si è fermato.
La codebase L0 perfettamente pulita che cerca una libreria esiste eccome, ma non è il collo di bottiglia. Il collo di bottiglia è la codebase che ci ha già provato una volta e ora nessuno vuole farsi carico delle conseguenze.
La modalità L1 esiste per quella codebase.
Quanto costa?
20 € al mese. Un solo piano. Circa 16.000 parole incluse — l’equivalente di circa 80 schermate tipiche di un’app. 5 € di credito per le traduzioni all’iscrizione. Che tu parta da L0, su una codebase greenfield, o da L1, con tre anni di debito sulle lingue, il prezzo non cambia: misuriamo il throughput e l’automazione, non quanto fosse disordinato il primo commit.
Quali post e documenti dell’Help Center dovrei leggere adesso?
- Guida alla configurazione L0 per un’app Next.js in Cursor
- Case study su un monorepo: cosa ha modificato davvero un agente
- Perché gli strumenti TMS classici faticano con gli stack moderni Git-native
- Help Center: ho già i18n: cosa fa globalize.now?
- Help Center: globalize_skills ha apportato troppe modifiche
Rilascia le lingue che il tuo traffico si aspetta già: collega il repository a globalize.now oppure scopri come l’automazione basata sui push Git si integra nel workflow del tuo team.
globalize.now trasforma il testo hardcoded dell'app in file di localizzazione pronti e li mantiene aggiornati mentre rilasci.
Prova globalize.now gratis