In questa pagina
Una routine di traduzione è un job di un agente di coding che gira a intervalli programmati o in CI: trova le stringhe cambiate, le abbozza in ogni lingua di destinazione, scrive i file di lingua e apre una pull request. Con Claude Code, Codex o un altro agente di coding bastano un file di skill e una riga di cron, e alcuni team ne costruiscono una per sostituire il proprio sistema di gestione delle traduzioni.
La domanda quindi è legittima: vi serve ancora un TMS? Per alcuni team no. Per la maggior parte dei team la risposta non è "il TMS al posto della routine", ma "la routine sopra un TMS". Questo articolo spiega quando la routine basta, cosa deve ricostruire quando non basta più, e tre modi per tenerla.
- Una routine abbozza bene: vede il codice, i placeholder e il testo vicino, e non richiede passaggi di consegne.
- Basta finché il team legge ogni lingua e nessuno al di fuori del repository deve toccare il testo.
- Dopo deve ricostruire una memoria tra le esecuzioni, un glossario vincolante, una revisione per lingua con una traccia, controlli sull’intera lingua, una distribuzione senza nuovo deploy, e le prove per chi chiede chi ha approvato un testo.
- Non dovete scegliere: con una chiave API del progetto la routine aggiunge un passo di sync e le sue bozze arrivano contrassegnate da revisionare; tramite il server MCP legge prima il glossario e la memoria, e le sue scritture vengono registrate come scritte dall’agente.
- Siete voi ad approvare le traduzioni? Cosa ottiene chi approva il testo, e l’unico passo da fare.
Com’è fatta la routine
Una routine di solito ha tre parti:
- Un file di skill o di istruzioni con le regole: mantenere i placeholder, aggiungere ogni forma plurale di cui la lingua ha bisogno, rispettare il tono, non toccare mai la lingua di partenza.
- Un trigger: una pianificazione cron, un merge nel branch principale, oppure un’etichetta su una pull request.
- L’esecuzione: l’agente confronta il file della lingua di partenza con i file di destinazione, abbozza i valori mancanti, li scrive e apre una pull request.
I suoi punti di forza sono reali. L’agente che abbozza l’etichetta tedesca di un pulsante sa che è un pulsante, che {{count}} è un numero e non un nome, cosa dicono le stringhe vicine e quanto spazio lascia il layout. Non c’è export, nessun passaggio di consegne e nessuna attesa per un giro di traduzione, e funzionalità che un tempo uscivano solo in inglese ora escono in ogni lingua del progetto.
Quando basta la routine da sola
Tenetela così com’è, senza un TMS, finché valgono tutte queste condizioni:
- il team legge ogni lingua di destinazione, oppure le lingue sono abbastanza poche da controllarle a mano;
- niente dipende dal testo: nessun flusso di checkout, nessun testo legale, nessun contenuto regolamentato;
- un solo team è responsabile del prodotto, e nessuno al di fuori del repository deve cambiare una stringa.
Questo descrive molti progetti. Se descrive il vostro, il resto dell’articolo è l’elenco delle cose a cui fare attenzione.
Cosa deve ricostruire dopo
Ogni esecuzione di una routine è senza stato: sa cosa c’è oggi nel repository e cosa dice il suo prompt. Le lacune non si vedono in una pull request; si vedono da una release all’altra. Il motivo per cui ciascuna deriva nel tempo è in quando gli agenti di codice traducono la vostra app; questa è la lista di ciò che va costruito.
| Di cosa ha bisogno il lavoro | Cosa fa la routine | Cosa il vostro team deve poi tenere in funzione, a ogni release |
|---|---|---|
| Memoria tra le esecuzioni | Vede i file attuali, ma niente le dice quali traduzioni sono state approvate, e le bozze IA variano da un’esecuzione all’altra, anche le nostre: nel nostro test le stesse chiavi con lo stesso contesto sono tornate in tedesco una volta come "Zurückstellen" e una volta come "Schlummern", finché una voce di glossario non ha chiuso la questione | Un archivio di traduzioni approvate che ogni esecuzione consulta, tenuto aggiornato ogni volta che qualcuno ne corregge una |
| Terminologia | Un glossario incollato nel prompt, che cresce, mai fatto rispettare | Un glossario per lingua, un controllo su ogni output, e qualcuno responsabile dei termini |
| Revisione per lingua | Chi revisiona la pull request legge una o due delle lingue | Un revisore per lingua, una coda da smaltire, e una traccia di ogni decisione |
| Controlli sull’intera lingua | Guarda il diff | Controlli su placeholder, forme plurali, tag e coerenza che girano dopo ogni merge, e qualcuno che corregge ciò che segnalano |
| Correzioni senza una release | Una stringa corretta aspetta il prossimo deploy | Distribuzione a runtime, con una cache che non serve mai una stringa obsoleta (come funziona) |
| Prove | git blame mostra un bot | Un’origine e uno stato di revisione per stringa, e un export che un auditor accetta |
| Persone al di fuori del repository | Un product manager o un traduttore ha bisogno dell’accesso al repository | Un editor con account, ruoli e controllo degli accessi |
Nessuno di questi pezzi è difficile da solo. Insieme sono un sistema di gestione delle traduzioni, scritto e mantenuto dal team che voleva smettere di gestirne uno.
Tre modi per tenere la routine
L’alternativa al ricostruire è tenere la routine e lasciarla scrivere in un sistema che ha già quei pezzi. In Locize ci sono tre configurazioni, dalla modifica più piccola a quella con più contesto, e tutte e tre girano senza supervisione in CI.
| 1. Aggiungere un passo di sync | 2. Lasciare le bozze a Locize | 3. Leggere prima il progetto | |
|---|---|---|---|
| Chi abbozza | la vostra routine, come oggi | la traduzione automatica di Locize | la vostra routine |
| Credenziale | chiave API del progetto | chiave API del progetto | token di accesso personale |
| Modifica alla routine | un comando di sync dopo di essa | il suo passo di bozza sparisce | strumenti MCP invece dei file |
| Glossario, guida di stile, memoria | non usati durante la bozza | usati durante la bozza | letti prima della bozza |
| Registrato come output macchina o dell’agente | no, solo contrassegnato da revisionare | sì | sì, con il nome dell’agente |
Quale fa al caso vostro:
| La vostra situazione | Cosa scegliere |
|---|---|
| Due o tre lingue che il team legge, niente dipende dal testo | la routine da sola |
| La routine funziona, ma nessuno nel team legge alcune delle lingue | 1 |
| Basta una frase di contesto per chiave, e glossario e memoria vanno usati durante la bozza | 2 |
| Le stringhe hanno bisogno del codice per essere tradotte bene, oppure la traccia deve mostrare cosa ha scritto un agente | 3 |
| L’ufficio legale, un cliente o un auditor chiede chi ha approvato il testo | 2 o 3, con la revisione attiva |
La routine continua a pagare i propri token del modello; le traduzioni abbozzate da Locize girano sugli AI token di Locize o sulla chiave del vostro provider (prezzi).
Tutte e tre finiscono nello stesso posto: una coda di revisione per lingua, dove ogni bozza aspetta finché qualcuno che legge la lingua non la conferma.

Cosa intercetta, da un’esecuzione reale con la configurazione 2: un agente ha segnalato 11 chiavi inglesi, e la traduzione automatica di Locize ha restituito 69 valori in sei lingue in circa undici secondi, ognuno con un punteggio di confidenza e una motivazione, e con le forme plurali di cui ogni lingua ha bisogno (tre in francese, una in giapponese) dove l’inglese ne ha due. I punteggi hanno indicato la resa letterale di "Wake up" in tedesco, spagnolo e giapponese. E il tedesco usava due termini per la stessa azione, cosa che un punteggio per stringa non può vedere e un revisore di quella lingua sì. Le bozze che la vostra routine invia direttamente, nelle configurazioni 1 e 3, arrivano senza punteggio; un’esecuzione di revisione IA le valuta.
1. Aggiungere un passo di sync
Tenete la routine così com’è. Dopo che ha scritto i file, inviate i nuovi valori di destinazione a Locize, contrassegnati da revisionare:
locize sync --api-key $LOCIZE_API_KEY --project-id $LOCIZE_PROJECTID \
--reference-language-only false --needs-review true \
--skip-delete true --auto-translate false--reference-language-only falseconfronta anche le lingue di destinazione, così le bozze della routine vengono inviate.--needs-review truecontrassegna ogni valore che la sincronizzazione invia: va online e resta nella coda dei revisori finché qualcuno non lo conferma (locize-cli 12.8.0 o successivo). Con--review true, invece, i valori arrivano come proposte di revisione e vanno online solo una volta accettati.--auto-translate falseimpedisce a Locize di tradurre da solo le nuove chiavi della lingua di partenza, così non entra in competizione con le bozze della routine.--skip-delete trueevita che venga cancellato un valore che qualcuno ha aggiunto in Locize e che i file non hanno ancora (le chiavi rimosse dalla lingua di partenza restano quindi in Locize finché non le rimuovete lì).
La correzione di un revisore non viene annullata dall’esecuzione successiva: Locize mantiene il valore che ha per una chiave esistente, e la sincronizzazione lo riscrive nei file. Una cosa da impostare prima della prima esecuzione: se il vostro team modifica i testi inglesi nel repository, eseguite locize sync --update-values true prima della routine, altrimenti la sincronizzazione ci riscrive sopra l’inglese di Locize. La sincronizzazione confronta con i file pubblicati, quindi usate una versione con pubblicazione automatica; il resto è nel riferimento di sync di locize-cli.
Provatelo alla prossima esecuzione della routine: avviate una prova gratuita di 14 giorni, create un progetto con le vostre lingue, salvate la sua chiave API come secret della CI, aggiungete il comando dopo la routine, e aprite il filtro needs-review nell’editor quando ha girato. La prima sincronizzazione invia ogni valore di destinazione che la routine ha scritto finora, quindi la coda mostra ciò che le esecuzioni precedenti hanno rilasciato senza un secondo sguardo. Siete già su Locize? Prendete la chiave API del vostro progetto e aggiungete il passo; non cambia nient’altro.
Il limite: i valori arrivano contrassegnati da revisionare, ma nella cronologia e nell’export di provenienza sembrano un qualsiasi altro valore inviato con la chiave API. Basta per la revisione, ma non quando la traccia deve distinguere il testo di un agente da quello di una persona; la configurazione 3 lo fa.
2. Lasciare le bozze a Locize
La routine continua a scrivere la funzionalità e il testo di partenza, e il passo di traduzione passa a Locize. La GitHub Action di Locize estrae le nuove chiavi, le sincronizza, le fa tradurre e scarica il risultato, con la stessa chiave API del progetto:
- uses: locize/translate@v2
with:
project-id: ${{ secrets.LOCIZE_PROJECTID }}
api-key: ${{ secrets.LOCIZE_API_KEY }}- La traduzione automatica usa come contesto la guida di stile, il glossario e la memoria di traduzione del progetto, e controlla ogni risultato rispetto al suo testo di partenza (sintassi, placeholder, tag, le forme plurali di cui la lingua ha bisogno) prima di salvarlo; i risultati IA sono anche vincolati al glossario.
- Con Quality Estimation ogni traduzione IA riceve un punteggio di confidenza, e le impostazioni di revisione decidono se tutte le traduzioni automatiche vengono contrassegnate da revisionare o solo quelle di cui il punteggio non si fida.
- Su una pull request,
command: synctraduce solo le chiavi che la pull request ha cambiato.
L’action si aspetta un file i18next.config (eseguite una volta npx i18next-cli init). Fuori da i18next, locize sync --auto-translate true fa lo stesso con la CLI. Questa configurazione è adatta quando basta una frase di contesto per chiave, e lascia all’agente la parte in cui è più bravo.
3. Far leggere prima il progetto alla routine
Quando una stringa ha bisogno di ciò che solo il codice mostra, lasciate che l’agente continui ad abbozzare, ma tramite il server MCP di Locize invece che nei file. L’esecuzione legge prima di scrivere:
find_missing_translationsper lingua: cosa manca o è obsoleto.get_glossary,get_styleguideesearch_translation_memory: i termini, la voce e le decisioni precedenti;get_screenshot_contextper una chiave ambigua.- L’agente abbozza, con il codice sotto gli occhi.
update_translationsconquality: "AI": le bozze sono dichiarate come output IA e contrassegnate da revisionare secondo la regola del progetto.
A intervalli programmati in GitHub Actions, con Claude Code:
name: nightly translations
on:
schedule:
- cron: '0 3 * * 1-5'
workflow_dispatch:
permissions:
contents: read
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- run: npm install -g @anthropic-ai/claude-code@2.1.317
- run: |
claude mcp add --transport http locize https://mcp.locize.app --header "Authorization: Bearer $LOCIZE_PAT"
env:
LOCIZE_PAT: ${{ secrets.LOCIZE_PAT }}
- run: >
claude -p "Translate the missing keys of the Locize project $LOCIZE_PROJECTID, version latest.
Call get_project_stats for version latest to see its languages and namespaces (if it answers with totals only, call it again per language),
then call find_missing_translations per language and namespace.
Before drafting call get_glossary, get_styleguide and search_translation_memory, and reuse a translation memory match with a high score.
Read the namespace's existing translations with get_translations to match their tone. Look up where each key is used in the code to see what it labels.
Push the drafts with update_translations and quality AI. Never send a null value, never publish, delete or rename anything.
End with a list of what you pushed and what you were unsure about."
--disallowedTools "Bash,Edit,Write,WebFetch,WebSearch,Read(~/.claude.json),Read(~/.claude/**)"
--allowedTools "mcp__locize__get_project_stats,mcp__locize__find_missing_translations,mcp__locize__get_translations,mcp__locize__get_glossary,mcp__locize__get_styleguide,mcp__locize__search_translation_memory,mcp__locize__get_screenshot_context,mcp__locize__update_translations,Read,Grep,Glob"
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
LOCIZE_PROJECTID: ${{ vars.LOCIZE_PROJECTID }}- Il token: create un token di accesso personale con i soli scope
readewrite, impostate una scadenza e salvatelo come secret del repository. Un token raggiunge ogni progetto che il suo proprietario può raggiungere, quindi fate in modo che appartenga a un utente che è membro solo di questo progetto. Dategli il nome della routine, per esempio "Routine di traduzione notturna": ogni scrittura tramite MCP porta il contrassegno dell’agente con il nome del token, così la cronologia nomina l’agente, e l’export di provenienza elenca le bozze come output macchina con il nome dell’agente, non come la modifica di una persona. - Cosa può fare: l’elenco degli strumenti esclude quelli strutturali (cancellare o rinominare namespace, pubblicare, branch).
update_translationspuò comunque cancellare una chiave quando riceve un valore null, e solo il prompt dice di non farlo; se il proprietario del token ha il permesso di sola traduzione, è il server stesso a rifiutare le cancellazioni di chiavi e le modifiche strutturali. - Cosa legge: l’agente legge testo scritto da altre persone (traduzioni, il glossario, i contesti delle chiavi). Il workflow gli nega esplicitamente la shell, la modifica dei file e il web, perché
--allowedToolssi limita ad aggiungere a ciò che le impostazioni di Claude già permettono, compreso un.claude/settings.jsonnel repository di cui è stato fatto il checkout. Gli nega anche la lettura della propria configurazione (doveclaude mcp addsalva il token), e le sue bozze vanno in revisione. - Intorno: le chiavi di partenza arrivano comunque a Locize come prima (saveMissing,
locize syncoreport_missing_keys), e l’app riceve le traduzioni revisionate dalla CDN o con unlocize downloadnella build. Se la traduzione automatica è attiva per il progetto, Locize abbozza per primo le nuove chiavi e la routine trova poco di mancante; disattivatela quando deve essere la routine ad abbozzare. - Altri agenti: un agente di coding che parla MCP su HTTP accetta lo stesso URL e lo stesso header nelle sue impostazioni MCP. I file di convenzioni in locize-agents portano la regola «leggere prima di abbozzare» anche nelle sessioni interattive.
Com’è un’esecuzione: su un progetto di test con tre nuove chiavi e tedesco, francese e russo come lingue di destinazione, la routine ha letto le statistiche, le chiavi mancanti, il glossario, la guida di stile e la memoria di traduzione, ha cercato ogni chiave nel codice, e ha inviato nove bozze come output IA, per meno di un dollaro di token del modello. Ha concluso con ciò su cui era incerta: aveva reso "Wake up" come "riattivare" o "riprendere", non alla lettera, il che fa perdere la metafora dello snooze. Tutte e nove le bozze erano nella coda needs-review, e la cronologia indicava il token come agente accanto a ciascuna.
Per un’esecuzione interattiva completa con l’output reale (i punteggi di confidenza, cosa non hanno visto, la revisione e l’export), vedete un agente di coding localizza una funzionalità, passo dopo passo.
Se siete voi ad approvare
La routine è uno strumento da sviluppatori; la domanda "chi ha approvato questo testo?" di solito arriva a qualcun altro: il responsabile della localizzazione, il product owner, o chi risponde all’ufficio legale o al procurement di un cliente. In tutte e tre le configurazioni, ecco cosa ottiene:
- Revisori per lingua. Un revisore può essere limitato alle proprie lingue, e il permesso di sola traduzione modifica i valori senza cancellare chiavi né cambiare la struttura del progetto (ruoli e permessi).
- Una sola coda, qualunque cosa abbia scritto la bozza. I valori della routine, della traduzione automatica e delle persone finiscono nella stessa coda needs-review per lingua (workflow di revisione); con un piano che include le notifiche, può partirne una quando la coda di una lingua supera una soglia.
- Una traccia per stringa. La cronologia conserva chi o cosa ha scritto ogni valore, chi lo ha confermato e quando.
- Prove su richiesta. L’export di provenienza (CSV e JSON per versione, lingua o namespace, dal piano Growth come le proposte di revisione) impacchetta lo stato di revisione per un auditor. La guida al workflow per l’articolo 50 mostra la configurazione, e la nostra spiegazione chiarisce quando si applica l’articolo 50.
- Un secondo sguardo, quando serve. Un’esecuzione di revisione IA su una versione valuta le traduzioni che un progetto ha già, chiunque le abbia scritte, e contrassegna da revisionare quelle di cui dubita oppure le trasforma in proposte di revisione con una motivazione e una correzione suggerita. Un agente può avviarne una con
start_ai_reviewe un tetto di budget, con un token che ha lo scopemanagee un ruolo di admin o manager.
Il vostro passo: configurate la revisione per lingua come descrive la guida al workflow per l’articolo 50, lasciate girare la routine una volta, poi scaricate l’export di provenienza di quella versione e confrontatelo con ciò che chiede il vostro auditor o il vostro cliente. La prova di 14 giorni di un progetto include la revisione e l’export; dopo, entrambi sono disponibili dal piano Growth in su.
Segnali che la routine ha bisogno di un sistema sotto
- la prima lingua che nessuno nel team legge;
- il primo reclamo sulla terminologia da parte di un cliente, delle vendite o del supporto;
- il primo "chi ha cambiato questa stringa, e perché?";
- la prima correzione che deve raggiungere gli utenti prima della prossima release;
- la prima domanda dall’ufficio legale o dal procurement di un cliente sul testo generato dall’IA.
L’agente continua ad abbozzare; quella parte non è mai stata il problema. Ciò di cui ha bisogno sotto è una memoria, un revisore e una traccia. Se la vostra routine gira già, avviate una prova gratuita di 14 giorni, date alla routine una chiave API del progetto, aggiungete il comando di sync e guardate la coda di revisione dopo la prima esecuzione. Siete già su Locize? La chiave API del vostro progetto è tutto ciò di cui la routine ha bisogno.
Domande frequenti
Mi serve ancora un sistema di gestione delle traduzioni se un agente di coding traduce la mia app?
Non sempre. Una routine in cui Claude Code, Codex o un altro agente di coding abbozza le stringhe mancanti e apre una pull request basta finché il team legge ogni lingua di destinazione, niente dipende dal testo e nessuno al di fuori del repository deve cambiare una stringa. Oltre quel punto la routine deve ricostruire una memoria di traduzione, un glossario vincolante, una revisione per lingua con una traccia, controlli sull’intera lingua e una distribuzione senza un nuovo deploy. La strada più economica di solito non è sostituire la routine, ma lasciarla scrivere in un sistema di gestione delle traduzioni che ha già quei pezzi, mentre l’agente continua ad abbozzare.
Una routine programmata di Claude Code o Codex può scrivere in Locize?
Sì, senza supervisione. Con la CLI di Locize o la GitHub Action di Locize usa una chiave API del progetto: su una versione con pubblicazione automatica, locize sync con --reference-language-only false e --needs-review true invia i valori abbozzati nelle lingue di destinazione, contrassegnati da revisionare, e non sovrascrive i valori che esistono già in Locize. Tramite il server MCP di Locize su https://mcp.locize.app usa un token di accesso personale come header Bearer, legge il glossario, la guida di stile e la memoria di traduzione prima di abbozzare, e invia le sue bozze dichiarate come output IA con update_translations.
Come tengo traccia di quali traduzioni ha scritto un agente?
Scrivete tramite il server MCP di Locize e inviate le bozze con quality "AI": vengono contrassegnate da revisionare secondo la regola del progetto, e ogni scrittura tramite MCP porta il contrassegno dell’agente con il nome del token, così la cronologia e l’export di provenienza non riportano le bozze come scritte da una persona. Un revisore limitato alla propria lingua conferma o modifica ogni valore, e la decisione viene registrata. La CLI può contrassegnare da revisionare i valori inviati, ma non dichiara chi li ha scritti.
Deve tradurre l’agente di coding o il TMS?
Funzionano entrambi, ed entrambe le bozze finiscono nella stessa coda di revisione. Lasciate abbozzare l’agente quando una stringa ha bisogno di ciò che solo il codice mostra: a quale elemento appartiene un’etichetta, quanto spazio ha, cosa contiene un placeholder. Lasciate abbozzare il TMS quando basta una frase di contesto per chiave; la traduzione automatica di Locize usa la guida di stile, il glossario e la memoria di traduzione come contesto e controlla ogni risultato rispetto al suo testo di partenza prima di salvarlo.
Il regolamento europeo sull’IA cambia qualcosa per le stringhe tradotte da un agente?
L’articolo 50 del regolamento europeo sull’IA si applica dal 2 agosto 2026. Secondo le linee guida finali della Commissione europea del 20 luglio 2026, una traduzione IA fedele è esente dall’obbligo di marcatura leggibile dalla macchina dell’articolo 50(2); l’obbligo di divulgazione visibile dell’articolo 50(4) riguarda solo i testi pubblicati per informare il pubblico su questioni di interesse pubblico, e decade quando il testo è passato per una revisione umana sostanziale o un controllo editoriale sotto la responsabilità editoriale di una persona. L’approvazione di una pull request mostra che qualcuno ha approvato un diff, non chi ha revisionato ciascuna lingua; una revisione per lingua e per stringa, registrata con il nome del revisore, lo mostra. Questo non è un parere legale.
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