Come il nostro gioco ha imparato quattordici lingue in una settimana 🌍
10 agosto 2026
Quando abbiamo iniziato, Blocks Beyond the Stars parlava esattamente due lingue: il tedesco, perché è dove viviamo, e l'inglese, perché internet parla inglese. Oggi ne parla quattordici. Ecco come è successo, e tutto quello che si è rotto lungo la strada. 🌍
È cominciato con Francesco. Qualche settimana fa è arrivata dall'Italia una pull request: Francesco Quirino aveva iniziato a tradurre il gioco in italiano. A mano. Gruppo dopo gruppo, a partire da tutti i 290 nomi dei blocchi e dalle loro descrizioni. Fu il momento in cui capimmo che dovevamo prendere sul serio le lingue, perché fino ad allora metà dei testi del gioco non era nemmeno traducibile. Oltre 300 messaggi del server erano scritti a mano in inglese. Così prima abbiamo fatto pulizia, solo perché il lavoro di Francesco avesse un posto dove atterrare.
Poi è arrivata la domanda scomoda. Tradurre una lingua a mano richiede settimane. Siamo una famiglia, non uno studio di localizzazione. Quindi: la macchina, ma fatta bene. Abbiamo costruito un piccolo strumento che divide il file della lingua in blocchi, li fa tradurre da un modello linguistico e poi controlla: manca una stringa? È sparito un segnaposto come {0}? Ha inventato una chiave che non esiste? Se sì, viene scartato. Solo quando lo strumento ha funzionato in modo affidabile abbiamo cominciato ad aggiungere lingue: olandese, portoghese brasiliano, polacco, turco, e poi russo, ucraino, cinese, giapponese e coreano.
Il tono era più difficile delle parole. Un modello linguistico traduce in modo educato e formale per impostazione predefinita. Ma un gioco per bambini che si rivolge a voi come una lettera della banca è semplicemente inquietante. Così ogni lingua ha avuto la sua regola: olandese «je/jij», polacco «ty», turco «sen», portoghese brasiliano «você», russo «ты», giapponese です/ます, coreano 해요체. L'olandese ci è costato una passata in più, perché una IJ a inizio parola ha entrambe le lettere maiuscole: «IJzererts», non «Ijzererts». Nessuna macchina lo trova da sola: lo si scopre leggendo il risultato.
E poi c'erano i quadratini vuoti. Avevamo il russo tradotto per intero, abbiamo avviato il gioco e il menu mostrava solo rettangoli. Il nostro carattere di casa, Rajdhani, semplicemente non ha il cirillico. Con cinese, giapponese e coreano la cosa si è fatta davvero scomoda: un carattere CJK completo pesa circa 16 megabyte. Per tre, sono quasi 50 MB: impensabile per un gioco che deve girare anche in un browser. La soluzione: costruire un carattere su misura, un sottoinsieme per ogni lingua, con esattamente i caratteri che compaiono nei nostri testi. 16 MB diventano 800 KB. Invece di 50 MB, il gioco ne cresce due. 🔤
Cosa ci ha insegnato. Tradurre è per il 20% traduzione e per l'80% tutto il resto: tirare fuori le stringhe dal codice, trovare i caratteri, controllare che le frasi stiano ancora nei pulsanti (il tedesco è lungo, ma il russo lo è di più) e assicurarsi che sia tradotta perfino la finestra di errore, quella che compare prima che i file di lingua siano caricati. Quell'ultimo messaggio abbiamo dovuto scriverlo a mano quattordici volte. Sembra sbagliato, ma è il messaggio che dovete assolutamente poter leggere.
Restiamo onesti: la prima passata è tradotta automaticamente. È buona, è completa, è validata, ma non l'ha letta un madrelingua. Lo diciamo apposta, invece di far finta di avere quattordici traduttori. Ed è proprio per questo che il lavoro italiano di Francesco è ancora conservato carattere per carattere: il nostro strumento riempie solo i vuoti, non sovrascrive mai una traduzione umana. Dove è passata una persona, vince la persona.
Se parlate una di queste lingue: ci piacerebbero le vostre correzioni, anche solo una. Il repository ha una guida alla traduzione che vi accompagna passo dopo passo nel contribuire, e se GitHub non fa per voi, diteci semplicemente quale frase suona strana. Un madrelingua in cinque minuti nota più cose di quante ne notiamo noi in cinque ore. 🌍✨
Commenti