Stai guardando un file in cui parte del lavoro è già stata completata. Quattrocento righe hanno un titolo in tedesco. Tremilaseicento no. Qualcuno, a un certo punto, ha tradotto il primo lotto, e poi il catalogo è cresciuto.
Gli strumenti ovvi richiedono l’intero file. Quindi la domanda non è come tradurlo, ma come tradurre solo la parte mancante, pagando esclusivamente per quella parte.
Com’è fatto effettivamente un file tradotto parzialmente
Ecco la natura del problema, in una dimensione ridotta per essere visibile a colpo d’occhio.
sku,title_en,title_deA-114,Wool coat,WollmantelA-115,Linen shirt,A-115,Linen shirt,LeinenhemdA-116,Denim jacket,A-116,Denim jacket,JeansjackeA-117,Cotton scarf,BaumwollschalSe porti questo esempio a quattromila righe, i due scenari smettono di essere simili. O paghi per 4.000 righe e revisioni un diff che le copre tutte, oppure paghi per 3.600 e ne revisioni 3.600. La seconda opzione lascia inoltre il testo già controllato dalla tua collega esattamente come lo ha lasciato.
I cinque tipi di file in cui accade
Questo non è un caso isolato. È lo stato normale di qualsiasi file che sia stato modificato più di una volta.
Righe aggiunte dall’ultima volta. Il catalogo è cresciuto di 200 prodotti. Gli altri 3.800 sono pronti e revisionati. Questo è il caso più comune in assoluto e si ripete ogni mese.
Una lingua aggiunta a un file che ne ha già tre. Il tuo foglio di calcolo ha colonne in francese, tedesco e spagnolo. L’italiano è stato concordato la scorsa settimana e la sua colonna è vuota o del tutto assente. Vuoi che l’italiano venga scritto e che le altre tre lingue restino intatte.
Un passaggio di consegne iniziato da qualcun altro. Un freelance ha completato il primo terzo prima che il progetto si bloccasse. Non sai esattamente dove si sia fermato e non vuoi scoprirlo pagando per la sovrapposizione.
Un file in cui uno strumento precedente ha scritto il testo sorgente nella colonna di destinazione come segnaposto. Questo caso trae in inganno tutti, perché il file sembra completato. In un export XLIFF o PO, ogni voce ha uno slot di destinazione, e molti strumenti lo riempiono con una copia del testo sorgente per rendere valida la struttura. Aprendolo, ogni destinazione appare popolata, ma quasi nessuna è effettivamente tradotta.
Righe lasciate intenzionalmente invariate. Descrizioni SKU interne, un paragrafo legale approvato dal tuo consulente in una sola lingua, tre prodotti in fase di dismissione. Questi non sono vuoti. Sono decisioni, e uno strumento che li riempie “per gentilezza” danneggia il file.
Questi ultimi due sono il motivo per cui “traduci i vuoti” non è una semplice casella di controllo. Solo tu sai cosa debba essere considerato mancante, quindi il meccanismo deve basarsi su una tua frase piuttosto che su un’impostazione.
Perché nessun altro strumento lo fa
- Every row goes through again
- Rows you had already reviewed come back reworded
- You pay a second time for the finished part
- The diff to review is the entire file
- Only the rows that fail your test are in scope
- Finished rows are copied through unchanged
- The word count is the gap, not the file
- The diff to review is only what was missing
Un traduttore automatico non ha il concetto di ambito. DeepL e Google Translate ricevono testo e restituiscono testo. Non c’è modo di esprimere “non questa riga”, perché una riga non è qualcosa che essi percepiscono. Puoi filtrare il file autonomamente prima di inviarlo e ricomporre il risultato in seguito, ma è un lavoro di gestione fogli di calcolo che ricade su di te e che devi ripetere ogni mese. Inoltre, e questo riguarda l’esperienza utente piuttosto che un test specifico: molti team si sono rivolti a noi perché, sui loro contenuti reali e con la loro terminologia specifica, la traduzione automatica non raggiungeva più gli standard qualitativi richiesti per la pubblicazione.
Un assistente generico può seguire la regola per un po’. Incolla 50 righe in ChatGPT o Claude con l’istruzione “compila solo le celle tedesche vuote” e lo farà. Il problema emerge quando i volumi aumentano, e accade silenziosamente: dopo i primi blocchi, una riga che aveva già una traduzione ne riceve una nuova, e tu lo scopri durante la revisione, o peggio, non lo scopri affatto. Esiste una versione più approfondita di questo confronto se ti interessa, ma in sintesi: una regola basata sulla fiducia non può essere verificata, mentre una applicata tramite codice sì.
Un’agenzia farà esattamente ciò che chiedi. Il costo non è la tariffa per parola, ma la preparazione: estrarre le righe mancanti, spiegare quali colonne lasciare intatte, attendere e poi reinserire il risultato nel tuo file. Questo non è lavoro linguistico, e il costo nascosto è che dovrai ripetere tutto al prossimo aggiornamento.
L’istruzione diventa codice, ecco perché regge fino alla riga 18.000
Questa è la parte fondamentale da capire, perché spiega perché una regola di ambito si comporta diversamente qui.
La tua frase non viene passata come semplice suggerimento a un modello di traduzione. AI Glot legge la struttura del tuo file e trasforma la tua istruzione in un piccolo programma che analizza il file e produce l’elenco esatto dei segmenti di testo da elaborare. Quell’elenco viene quindi tradotto. La regola viene valutata tramite codice per ogni singolo record, quindi il record 18.000 viene sottoposto allo stesso test del record 1. Non c’è deriva, perché non c’è nulla che possa derivare.
Quel programma viene eseguito sotto una serie di controlli prima che vengano scalati i crediti:
- Non può modificare il tuo file. Il documento viene confrontato prima e dopo l’esecuzione del programma e qualsiasi modifica viene immediatamente rifiutata. Il tuo upload non viene mai toccato e ogni decisione sull’ambito di applicazione riguarda solo il file di output.
- Non può inventare testo. Ogni segmento di testo selezionato deve esistere parola per parola nel tuo file. Non può parafrasare una cella durante l’elaborazione.
- Ogni destinazione deve essere uno slot scrivibile reale, quindi una regola che punta a una colonna inesistente fallisce in fase di pianificazione invece di produrre un file errato.
- Se la tua regola non trova nessuna corrispondenza, la pianificazione fallisce e ti avvisa. Può sembrare un comportamento poco amichevole, ma è estremamente utile: è così che scopri, gratuitamente, che il file che pensavi fosse a metà è in realtà finito.
“Ancora mancante” può significare quattro cose diverse
Ecco la sfumatura che determina se la tua frase funzionerà. Un vuoto non è lo stesso oggetto in ogni formato, quindi il test che la tua istruzione deve descrivere cambia a seconda del file che hai davanti.
In un foglio di calcolo, un vuoto è una cella vuota. Che il file sia un export CSV o un workbook Excel, il test è lo stesso: questa riga ha un titolo in inglese e nulla nella colonna tedesca, quindi questa riga è inclusa. Scrivi “solo le righe in cui la colonna tedesca è ancora vuota”.
In un file bilingue, un vuoto è una destinazione che è ancora uguale alla sorgente. XLIFF e PO associano a ogni voce uno slot di traduzione, e tale slot è solitamente precompilato con una copia della sorgente. In questo caso, verificare il vuoto è il test sbagliato: quello corretto è un confronto: “traduci solo le unità in cui la destinazione contiene ancora lo stesso testo della sorgente”. Questa semplice frase è il motivo per cui un export di WordPress da 228 unità, di cui 217 destinazioni sono ancora in francese originale, diventa un lavoro normale invece di una discussione sul fatto che il file sia pronto o meno.
In un albero di chiavi, un vuoto è una chiave che non esiste. In JSON o YAML, la traduzione tedesca di una stringa esiste come chiave sorella o non esiste affatto, e una chiave mancante può essere creata purché esista l’oggetto genitore. Anche un valore vuoto è considerato tale, quindi “solo dove la chiave de è mancante o vuota” copre entrambi i casi.
In un file a lingua singola, non c’è nulla all’interno del file con cui confrontare, e questo è il limite oggettivo. Un file Android strings.xml, un iOS .strings, un Java .properties, un .NET RESX e un file di sottotitoli SRT contengono esattamente un valore per chiave. Non c’è una colonna sorgente accanto. Pertanto, lo stato “già tradotto” non può essere testato meccanicamente, perché il file non lo registra. Funziona invece tutto ciò che il file mostra effettivamente: un valore vuoto o un marker inserito manualmente, come il prefisso TODO. Se l’unico segnale è che un valore “sembra inglese”, nessuna regola può esprimerlo in modo affidabile: in tal caso, è meglio dividere il file prima di caricarlo.
Dove inserire la frase di ambito e dove non produrrà alcun effetto
Se sbagli questo passaggio, pagherai per tradurre l’intero file. Ci sono due posti dove scrivere un’istruzione e non sono intercambiabili.
- Decides WHICH text gets translated
- Read once, against the structure of your file
- Compiled into code, then run over every record
- Example: "only the rows where the German column is empty"
- Decide HOW each string is written
- Applied while one single string is being written
- The only thing in view is that one string
- Example: "keep the {count} placeholder exactly as written"
L’istruzione del piano è quella che scrivi prima di visualizzare il piano. Viene analizzata in base alla struttura del tuo file ed è la base su cui il piano viene costruito. Qui si definisce l’ambito (scope).
Le istruzioni del batch vengono portate nella traduzione e applicate mentre ogni singola stringa viene scritta. In quel momento, l’unica cosa visibile è una singola stringa, quindi una regola può descrivere solo elementi presenti in quella stringa: mantenere un placeholder così com’è, non toccare un URL nel contenuto, non tradurre mai il nome di un prodotto, usare un registro informale.
Ecco dove nascono gli errori. Se inserisci “traduci solo le celle vuote” nelle istruzioni del batch, non succede nulla e non ricevi alcun avviso. A quel punto non ci sono celle. C’è una singola stringa, già selezionata e in fase di traduzione, perché la decisione sull’ambito è stata presa in precedenza da un’istruzione che non menzionava lo scope. Il file torna completamente tradotto e la fattura riflette questo risultato.
| Scritto nelle istruzioni del batch | Perché non funziona | Dove andrebbe inserito |
|---|---|---|
| “Traduci solo le celle vuote.” | Non sono visibili celle, ma una singola stringa. | L’istruzione del piano |
| “Salta la prima colonna.” | La colonna è parte della struttura del file. | L’istruzione del piano |
| “Solo le righe aggiunte da marzo.” | Idem. | L’istruzione del piano |
| “Non toccare la colonna SKU.” | Idem. Descrivi invece il contenuto: “non tradurre i codici prodotto alfanumerici”. | In entrambi, se riformulato |
Il modo più semplice per ricordarlo: il piano decide cosa viene tradotto, le istruzioni del batch decidono come deve suonare.
Scrivere l’istruzione
Usa un inglese semplice, una o due righe, indicando esplicitamente la lingua di partenza e quella di destinazione. Queste funzionano tutte così come sono scritte:
Only the rows where the German column is still empty. Source is English.
Only translate the units where the target is identical to the source,
it is a placeholder. Leave every unit that already differs.
Fill the empty Italian column from the English one. Do not touch the
French, German or Spanish columns.
Translate the description and the SEO title into Dutch where the Dutch
version is missing. Leave the handle and the SKU alone.
Due abitudini che ripagano ampiamente. Indica la lingua di partenza invece di lasciare che venga dedotta, perché l’inferenza è meno affidabile proprio dove conta di più: stringhe brevi e file che contengono già alcuni valori tradotti, come ogni file in questo articolo. E indica le colonne o le chiavi che devono restare intatte, anche quando la tua regola di ambito le esclude già. Costa una clausola in più, ma elimina un’intera categoria di malintesi.
Se gli stessi termini devono essere tradotti nello stesso modo del batch precedente, inseriscili una volta in un glossario del workspace. Le righe che stai compilando ora coincideranno con quelle compilate da qualcuno a marzo, che è l’altra metà del processo per completare correttamente un file tradotto solo in parte.
Conferma l’ambito prima di pagare
Non dovrai mai sperare che l’istruzione sia stata recepita, perché leggerai prima il piano.
Il piano ritorna con conteggi misurati, ovvero il numero reale di elementi e parole trovati nel tuo file, non una stima basata sulla dimensione. Offre tre modi per verificarlo: un’anteprima di come apparirà il file, una tabella dei precisi segmenti di testo che verranno inviati e un riassunto in linguaggio semplice di quanto compreso. La tabella degli elementi è il punto in cui un ambito errato diventa evidente, perché una riga che ti aspettavi fosse esclusa sarà presente o meno in quell’elenco.
Se è sbagliato, segnalalo in una frase e il sistema pianificherà di nuovo. La creazione del batch e la pianificazione sono gratuite e ripetibili quante volte vuoi. L’approvazione è l’unico passaggio che consuma crediti, e il numero che approvi è il conteggio esatto delle parole nell’ambito selezionato. Quindi l’errore costoso di tutto questo articolo, pagare per ritradurre un lavoro già fatto, è un errore che puoi commettere solo approvando un piano che lo indica chiaramente.
Questo ordine è più importante di quanto sembri. Uno strumento in cui l’ambito è un’ipotesi richiede fiducia. Uno strumento in cui l’ambito è un piano che leggi è uno strumento in cui sbagliare non costa nulla.
Altre due cose utili da sapere
Puoi richiedere solo i record modificati. Se ciò di cui hai realmente bisogno è un file piccolo da consegnare a un revisore piuttosto che l’intero catalogo, specificalo e l’output manterrà solo i record che hanno ricevuto una traduzione. Questo funziona per CSV, Excel, JSON, YAML, PO, XLIFF, SRT e archivi ZIP di questi formati. Questa opzione è deliberatamente esclusa per i file di risorse delle app, poiché un’app cerca ogni chiave che si aspetta di trovare e un file strings.xml parziale causerebbe un crash invece di essere semplicemente un file più piccolo.
Una regola che deve contare su tutto il file non funzionerà. Per i file di grandi dimensioni, il programma che seleziona l’ambito analizza finestre consecutive di righe anziché vedere tutto in una volta. Le regole basate sulla posizione funzionano perché il sistema può fare i calcoli: ogni seconda riga, le prime 500 righe. Una regola che richiede un totale cumulativo, come “le prime 200 righe che sono ancora vuote”, non funziona, perché nessuna singola scansione sa quante finestre precedenti abbiano già corrisposto. Chiedi tutte le righe vuote, oppure un intervallo di righe fisso, e in entrambi i casi funzionerà.
L’ambito reale di tutto questo
Usalo per la parte che è genuinamente ripetitiva: le 200 righe apparse questo mese, la quarta lingua accettata la settimana scorsa, le duemila unità che uno strumento precedente ha lasciato con il testo sorgente. Quel lavoro è estenuante se fatto a mano, ed è lo stesso lavoro ogni mese.
Poi dedica il tempo della revisione all’output, non al filtraggio del file. Molti team utilizzano questo metodo come prima fase e poi fanno intervenire un revisore: è un ottimo modo di sfruttare un esperto e un pessimo modo di spendere un pomeriggio a creare una copia di un foglio di calcolo cancellando alcune righe.
Se non hai ancora completato uno di questi processi, parti dall’intero flusso piuttosto che dall’ambito: trovi una guida per la traduzione di un file CSV e una per la traduzione di un file Excel, e la frase sull’ambito indicata sopra può essere inserita in entrambe senza modifiche.
Per la tua homepage, assumi un traduttore. Per le 3.600 righe che sono ancora vuote, non pagare per le 400 che non lo sono.