IA e Tecnologia
Come tradurre i sottotitoli SRT senza perdere i timestampPerché la traduzione dei sottotitoli è un lavoro di precisione Un file SRT è un formato rigorosamente strutturato. Ogni…
Amanda Lee
I file di lingua PO, YAML, .properties, RESX, XLIFF e JSON sembrano elenchi di frasi, ma solo i valori sono testo. Le chiavi sono identificatori che il codice cerca; i segnaposto sono spazi che il codice riempie in fase di esecuzione; gli escape e il markup sono sintassi da cui dipende il parser. Un traduttore che tratta l'intera riga come testo produrrà un file che si legge benissimo e non si carica, oppure si carica e poi va in crash la prima volta che una schermata formatta un numero. L'errore di solito compare in una sola lingua, ed è per questo che è il tipo di bug più difficile da individuare in revisione.
L'inglese ha due forme plurali, quindi viene la tentazione di pensare che ogni lingua ne abbia due. Il manuale di GNU gettext mostra perché non funziona: ogni lingua dichiara la propria regola Plural-Forms, l'inglese usa nplurals=2 e il russo ha bisogno di tre forme scelte in base alle ultime cifre del numero. Un file PO tradotto in russo con solo due forme inserite viene compilato, si avvia e stampa la grammatica sbagliata per ogni quantità che termina in 2, 3 o 4. Gestire correttamente i plurali significa produrre il numero di voci msgstr richiesto dalla lingua di destinazione, non quello che la lingua di origine aveva per caso.
L'ordine delle parole cambia da lingua a lingua, quindi una frase con due valori spesso deve disporli al contrario. I segnaposto posizionali come %1$s e %2$s, o quelli con nome come {count} e {user}, esistono proprio per questo: la traduzione può riordinarli, ma ciascuno deve comunque comparire esattamente una volta. I segnaposto anonimi, come un semplice %s, non possono essere riordinati in sicurezza: è un problema da correggere nelle stringhe di origine prima della traduzione, non dopo.
Ogni formato ha i suoi punti critici. In YAML, la specifica assegna a un blocco letterale (|) e a un blocco ripiegato (>) un comportamento diverso per gli a capo, e gli anchor (&) e gli alias (*) permettono a un nodo di riutilizzarne un altro, quindi entrambi devono passare intatti. XLIFF 2.1 racchiude la formattazione originale in elementi inline come <ph> e <pc>, che la traduzione deve mantenere al loro posto attorno alle parole giuste. In .NET, le risorse RESX vengono cercate per nome in fase di esecuzione per le impostazioni cultura correnti dell'interfaccia, quindi un elemento data rinominato ripiega silenziosamente sulla lingua predefinita. E un file .properties Java tratta il primo =, : o spazio non preceduto da escape come separatore della chiave, quindi due punti vaganti in una chiave tradotta la spezzano in due.
Quasi sempre perché un segnaposto è stato modificato solo in quella lingua: rinominato, eliminato o duplicato. Il codice passa gli stessi argomenti a tutte le lingue, quindi l'unica traduzione che non vi corrisponde più fallisce quando quella schermata viene formattata.
Le regole del plurale appartengono alla lingua, non al software. Gettext permette a ogni lingua di dichiarare la propria regola; il russo sceglie tra tre forme in base alle ultime cifre del numero, quindi una traduzione con solo due forme stampa la grammatica sbagliata per molte quantità.
Perché il classico Properties.load(InputStream) legge il file come Latin-1. I caratteri al di fuori di quell'intervallo devono essere scritti come escape \uXXXX, oppure il file va caricato con un reader che usa la codifica corretta.
Sì, quando sono posizionali (%1$s, %2$s) o con nome ({count}, {user}) — riordinarli è spesso necessario per un ordine naturale delle parole. Ogni segnaposto deve comunque comparire esattamente una volta. I segnaposto %s semplici non possono essere riordinati in sicurezza.
Le chiavi sono identificatori, non testo. Il codice chiede una stringa tramite la sua chiave; una chiave tradotta significa che la ricerca fallisce e l'app mostra una chiave grezza o ripiega sulla lingua predefinita.
Carica un file PO, YAML, .properties o RESX e ricevilo indietro con chiavi, segnaposto, escape e struttura esattamente dove si trovavano.
Traduci un File di Lingua Gratis
IA e Tecnologia
Come tradurre i sottotitoli SRT senza perdere i timestampPerché la traduzione dei sottotitoli è un lavoro di precisione Un file SRT è un formato rigorosamente strutturato. Ogni…
Amanda Lee
IA e Tecnologia
Come tradurre una presentazione PowerPoint onlineLa vera sfida della traduzione di una presentazione Una presentazione PowerPoint è più di un semplice testo. Ogni diapo…
Amanda Lee