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,BaumwollschalEstendi il confronto a quattromila righe (un esempio illustrativo, non un lavoro misurato) e i due risultati non sono più paragonabili. O paghi per 4,000 righe e controlli le differenze su tutte, oppure paghi per 3,600 righe e ne controlli 3,600. La seconda opzione lascia anche intatte le traduzioni già verificate dalla tua collega.
I cinque tipi di file in cui accade
Non è un caso limite. È la situazione normale di qualsiasi file su cui si è intervenuti più di una volta, e la posta in gioco è concreta: nel luglio 2020, su un campione di 8,709 consumatori in 29 paesi, CSA Research ha rilevato che il 76% degli acquirenti online preferisce acquistare prodotti con informazioni nella propria lingua e il 40% non comprerà mai da siti in altre lingue.
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 inserito il testo originale nel campo di destinazione come segnaposto. Questo inganna chiunque, perché il file sembra completo. In un’esportazione XLIFF, ogni unità di traduzione può contenere un elemento <target> e un attributo state che indicano lo stato del testo di destinazione (la specifica definisce facoltativo il campo di destinazione e descrive state come un’indicazione del suo stato). Eppure, molti strumenti precompilano il campo di destinazione copiando il testo originale, così la struttura sembra completa. Apri un file del genere e troverai tutti i campi di destinazione compilati, anche se molti non sono tradotti.
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.
Dove finisce l’ambito per intervallo e inizia quello per condizione
- Ogni riga viene elaborata nuovamente
- Le righe che avevi già revisionato vengono riscritte
- Paghi una seconda volta per la parte già completata
- Il diff da revisionare è l'intero file
- Sono incluse solo le righe che non superano il test
- Le righe completate vengono copiate senza modifiche
- Il conteggio delle parole riguarda i vuoti, non l'intero file
- Il diff da revisionare riguarda solo ciò che mancava
Un traduttore automatico lavora sul testo che gli invii. DeepL e Google Translate ricevono del testo e restituiscono del testo, quindi devi decidere cosa escludere prima di inviare i contenuti (vedi la nostra analisi completa dei limiti della traduzione massiva con DeepL). Alcuni strumenti permettono di selezionare intervalli: per esempio, il traduttore Excel di Smartcat ti consente di indicare un intervallo di colonne, come A:H, o di righe, come 1:50, e scegliere se tradurlo o lasciarlo invariato. Ma un intervallo identifica una posizione, mentre «solo se la cella in tedesco è vuota» è una condizione sul contenuto, ed è proprio questo che gestiamo noi. Altrimenti, devi filtrare il file prima di inviarlo e ricomporre il risultato dopo: un’attività sui fogli di calcolo di cui ora sei responsabile e che devi ripetere ogni mese. A parte questo, e non si tratta di un test che abbiamo condotto: alcune aziende si sono rivolte a noi perché, sui loro contenuti reali e con la loro terminologia, la traduzione automatica non raggiungeva più il livello qualitativo richiesto 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.
Prima, il metodo manuale
Se preferisci fare tutto a mano, i passaggi fondamentali sono pochi:
- Aggiungi un filtro alla colonna di destinazione e visualizza solo le celle vuote.
- Copia il testo originale dalle righe ancora visibili.
- Incollalo in un traduttore e traducilo.
- Incolla il risultato nelle righe filtrate della colonna di destinazione.
- Rimuovi il filtro e verifica che l’ordine delle righe e quelle già completate siano rimasti invariati.
Funziona e, per qualche centinaio di righe, è una soluzione ragionevole. Il resto è pensato per quando non vuoi ripetere ogni mese questi cinque passaggi, o quando per «mancante» non si intende una semplice cella vuota.
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, una lacuna è una cella vuota. Un file CSV non distingue tra origine e destinazione: RFC 4180 descrive solo record, campi e un’eventuale riga di intestazione. Spetta quindi solo alle tue istruzioni specificare quale colonna contiene il testo di partenza e quale quello di arrivo. Che il file sia arrivato come esportazione CSV o cartella di lavoro Excel, il criterio è lo stesso: questa riga ha un titolo in inglese e la colonna tedesca è vuota, quindi va inclusa. Specifica: “solo le righe in cui la colonna tedesca è ancora vuota”.
In un file bilingue, spesso una lacuna è un testo di arrivo identico a quello di partenza. XLIFF associa ogni unità a un campo di traduzione che molti strumenti precompilano copiandovi il testo originale. In questo caso, verificare che il campo sia vuoto non serve: bisogna confrontare i testi. La richiesta giusta è: “traduci solo le unità in cui il testo di arrivo è ancora uguale a quello di partenza”. Questa semplice frase è il modo per gestire un file come questo, un esempio illustrativo e non un file di un cliente: un’esportazione WordPress con 228 unità, di cui 217 hanno ancora il testo francese originale come testo di arrivo, è un normale lavoro di traduzione, non un motivo per discutere se il file sia completo.
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 monolingue non c’è nulla con cui confrontare i contenuti, ed è importante essere chiari su questo limite. Un file strings.xml Android, un file .strings iOS (la guida di Apple consiglia un file .strings per ogni lingua, ciascuno in una cartella della lingua, ad esempio de.lproj), un file Java .properties, un RESX .NET e un file di sottotitoli SRT contengono un solo valore per chiave. Non c’è una colonna con il testo di partenza accanto. Perciò non è possibile verificare automaticamente se un testo è “già tradotto”: il file non contiene questa informazione. Puoi invece basarti su ciò che il file mostra davvero: un valore vuoto o un indicatore che hai aggiunto tu, come il prefisso TODO. Se l’unico indizio è che un valore “sembra inglese”, non esiste una regola affidabile per descriverlo. In questo 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.
- Decide QUALE testo viene tradotto
- Letta una volta, in base alla struttura del tuo file
- Compilata in codice, poi eseguita su ogni record
- Esempio: "solo le righe in cui la colonna tedesca è vuota"
- Decidi COME deve essere scritta ogni stringa
- Applicate mentre viene scritta una singola stringa
- L'unica cosa visibile è quella singola stringa
- Esempio: "mantieni il segnaposto {count} esattamente come scritto"
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 fare un conteggio sull’intero file non funzionerà. Con un file grande, il programma che seleziona l’ambito di lavoro elabora righe in finestre consecutive, senza vedere tutto il file insieme. Le regole basate sulla posizione funzionano, perché i calcoli sono semplici: ogni seconda riga, le prime 500 righe. Una regola che richiede un conteggio progressivo, come “le prime 200 righe ancora vuote”, invece non funziona, perché nessun singolo passaggio sa quante righe corrispondenti sono già state trovate nelle finestre precedenti. Puoi chiedere tutte le righe vuote oppure un intervallo fisso di righe: entrambi i criteri vanno bene. I fogli possono contenere moltissime righe: Excel ne consente 1,048,576 per foglio, quindi una regola che funziona alla riga 18,000 ha tutto lo spazio necessario per essere verificata.
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.
