Come preparare un gioco per la localizzazione?


48

Molti progetti non pensano alla localizzazione fino al termine del gioco. Quindi la localizzazione viene eseguita come un hack ed è ovvio che è stata aggiunta in seguito. Alcune aree specifiche di interesse:

  • Stringhe di testo (ovviamente)
  • Clip audio come musica e / o narrazioni
  • Testo reso su trame (ad esempio un'etichetta su una cassa)
  • Testo reso in cornici nei film pre-renderizzati
  • Font / set di caratteri per lingue diverse
  • Eccetera.

Quali sono alcuni buoni modi per prepararsi a queste sfide nelle fasi iniziali di sviluppo, in modo da poterlo rendere più semplice senza incorrere in troppi costi in anticipo?


8
Recentemente ho interpretato Dawn of Discovery - Venezia, localizzato in inglese dal tedesco. È circa il 99% corretto. . . e di tanto in tanto uno dei personaggi parla inspiegabilmente di tedesco per una riga, o uno dei rapporti sullo stato dell'edificio ha delle dieresi, o (una volta ogni tanto) sono informato che posso acquistare un articolo di debug dal negozio locale. Qualunque sia il metodo che usi, assicurati che sia facile rilevare linee non tradotte - se devi leggerle visivamente o giocare e sperare che vengano visualizzate, stai sbagliando.
ZorbaTHut,

@ZorbaTHut L'elemento di debug è un modo per segnalare errori di traduzione o gli sviluppatori DoD hanno usato un DLC per correggere problemi di localizzazione?
Dan Neely,

Creare un linguaggio falso che i tuoi programmatori possono leggere e scrivere può essere utile. Google ha un linguaggio "hacker" e Facebook ha Pirate. È divertente per gli sviluppatori ed è qualcosa che possono testare da soli senza imparare una nuova lingua.
John McDonald,

Per aggiungere alle risposte di cui sopra, ti suggerisco di passare attraverso una serie di pseudo-localizzazioni (essenzialmente il nome formale e il processo del punto "Rendi evidente il testo localizzato mancante" nella risposta in alto). Sarai in grado di eliminare potenziali problemi di implementazione prima ancora che inizi la traduzione.
Anthony,

Risposte:


49

Non sono un esperto, ma ecco alcune cose di base:

Assicurati che le tue stringhe possano gestire più di un semplice ASCII

Avrai bisogno di alcuni personaggi spécîål che non rientrano in ASCII e la tua classe di stringhe è meglio non sbagliarli. UTF-8 è una codifica comune perché è efficiente nello spazio. Qualunque cosa tu faccia, prova presto e risolvi il problema.

È davvero una buona idea usare una vera classe di corde e non solo char *dappertutto o ti troverai in un mondo di dolore.

Non dimenticare i tuoi caratteri. Assicurati che tutti i caratteri che stai utilizzando abbiano i caratteri di cui hai bisogno.

Estrai le stringhe dal codice

Questo è il più importante. Assicurati che le stringhe di testo siano memorizzate al di fuori del codice in alcuni file di dati che puoi scambiare. Preparare una pipeline per questo può essere un lavoro ingrato, ma ti farà risparmiare un sacco di tempo dopo. Avrai bisogno di alcune semplici API in modo che ogni volta che hai bisogno di una stringa nel codice, sia semplice come:

String text = Locale::getString("some unique identifier");

Non concatenare o creare stringhe nel codice

È importante non fare ipotesi su come un pezzo di testo sia composto da parole più piccole. Anche qualcosa di innocuo come:

String currency = Locale::getCurrencyString() + money.toString();
// creates $123

è un problema perché altre lingue possono posizionare il segno di valuta dopo il numero. Invece, usa stringhe di formato che sono esse stesse localizzate come:

String format = Locale::get("currency format"); // returns "${0}" in English
String currency = String::Format(format, money.toString());

In questo modo, i localizzatori possono riorganizzare le parole all'interno della stringa di formato.

Riduci al minimo la quantità di testo che appare nell'arte, in particolare i video

Il fork delle risorse artistiche è un lavoro ingrato. Probabilmente dovrai farlo almeno un po 'per alcuni elementi dell'interfaccia utente, ma è una seccatura. Forking FMV è un dolore enorme perché ora devi eseguire il rendering e archiviare copie duplicate del tuo FMV.

Prova accuratamente in diverse lingue

Nella maggior parte dei codebase, è fin troppo facile semplicemente dire printf("Hi there");o loadTexture("someTexture");dimenticare che devono passare attraverso l'API di localizzazione. Qualcuno dimenticherà e finirai con qualcosa di corretto nella tua lingua principale ma sbagliato in altri. L'unico modo per trovarli è far testare i tester in lingue non primarie.

Rendi evidente il testo localizzato mancante

In genere traduci il testo alla fine del ciclo, quindi per la maggior parte del tempo non ci saranno dati per alcune lingue. Va bene perché ti consente di iterare i tuoi contenuti senza doverli ritradurre costantemente. Il rovescio della medaglia è che significa che è facile per te perdere le cose e dimenticare di tradurre alcune cose.

Una cosa economica che puoi fare è far apparire il testo mancante molto ovviamente come "!!! NECESSARIA TRADUZIONE PER ID #blah blah !!!" nel gioco quando manca.

Progetta la tua interfaccia utente in base al linguaggio peggiore

Lingue diverse tendono ad avere parole più o meno lunghe. Un'interfaccia utente che sembra bellissima in inglese può avere del testo che oltrepassa i suoi confini, viene ritagliato o avvolto in modo errato in una lingua più lunga. Dovrai apportare modifiche all'interfaccia utente per adattarsi alla lingua peggiore (o biforcare l'interfaccia utente, ma probabilmente non è quello che vuoi fare.)

Stranamente, l'inglese è spesso la lingua più breve di quelle tipicamente localizzate, quindi i tuoi progettisti probabilmente stanno progettando inavvertitamente il caso migliore. Fagli usare un testo extra lungo per i segnaposto durante la progettazione. Supponiamo che un determinato testo possa essere più lungo del 30% circa rispetto a quello inglese. Google Translate può essere utile per ottenere un testo approssimativo per il segnaposto.

Tempo di budget per la traduzione

La traduzione del testo di solito avviene in ritardo quando la squadra è stanca e non gliene importa nulla. Tuttavia, riceverai molti bug quando succede. Le parole supereranno i confini, i traduttori faranno errori, ecc. A peggiorare le cose, il tempo di risposta per iterare il testo può essere lungo se devi inviare testo a persone oltremare e attendere le loro modifiche. Dare tempo per questo lavoro.


4
Ah, stringhe concatenate. Che dolore nel culo. Funziona alla grande nella lingua madre per creare varietà rapidamente e facilmente. Ma poi entri in una lingua con una grammatica diversa ed è un fallimento completo. Anche tutti gli altri punti sono buoni. 'Impostazioni' in tedesco era 'Einstellungen', che divora un po 'di spazio extra sullo schermo quando ne hai bisogno.
Casey Wagner,

13

Oltre ad altri suggerimenti, una cosa che ho fatto in passato, che aiuta molto a trovare il testo tradotto che fuoriesce dai componenti dell'interfaccia utente, è quella di avere una modalità lingua speciale per il tuo gioco che, quando si visualizza qualsiasi stringa, esamina tutte le lingue e seleziona la versione più lunga di quella stringa. In questo modo, una volta adattate tutte le stringhe in quella modalità, sai che hai risolto tutti i sanguinamenti del testo in ogni lingua.


9

Localizzare correttamente un gioco è dannatamente difficile .

Puoi navigare in Internet, leggere post di blog o risposte StackOverflow; puoi imparare i tradizionali framework i18n come gettext ; leggere le pagine di Wikipedia su internationaliztaion e localizzazione del gioco ; consulta l'eccellente guida linguistica Microsoft, ma localizzare i giochi è in realtà più difficile di così. In effetti, con i giochi è probabilmente più difficile che con qualsiasi altra applicazione o interfaccia web. Questo perché i giochi sono molto più dinamici, più vibranti, più vivi (beh, almeno lo sono buoni giochi).

Più precisamente, probabilmente saranno necessari i seguenti passaggi:

Stabilire i confini.

Volete prendere una decisione importantissima per quali lingue volete supportare presto. Più ampia sarà la vostra scelta, maggiori saranno le ipotesi su come una lingua può comportarsi. Spesso questi presupposti sono così profondamente impressi nel nostro cervello, che non possiamo nemmeno immaginare che possano essere errati senza che qualcuno li sottolinei. Il che ci porta al punto successivo:

Trova gli esperti per ogni lingua che desideri supportare.

Esperto significa qualcuno che ha sufficienti capacità analitiche e conoscenza della lingua, che sarebbe in grado di indicarti quali ipotesi fa un madrelingua inglese che non sono valide nella sua lingua. Quindi dovrai elaborare una strategia su come aggirare quei presupposti.

Ad esempio: nelle lingue occidentali giustificiamo il testo in un paragrafo inserendo uno spazio aggiuntivo tra le parole. In lingua araba il testo è giustificato inserendo caratteri kashida all'interno delle parole. Potrebbe sembrare così .

Un altro esempio: in russo ci sono 2 forme plurali per la maggior parte delle parole. Pertanto, ad esempio, traduresti "1 moneta" / "3 monete" / "5 monete" come "1 монета", "3 монеты", ma "5 монет". La procedura effettiva per decidere la forma plurale corretta è simile alla seguente:

function LocalRU::GetPlural(n, form0, form1, form2) {
    return (n%10) == 0 || (n%100) >= 5 && (n%100) <= 20? form0 : 
           (n%10) == 1? form1 : 
           (n%10) <= 4? form2 : form0;
}

Crea un modulo di traduzione sensibile al contesto.

Probabilmente sei consapevole che la traduzione dipende sempre dal contesto. E sai che il contesto all'interno di un gioco cambia continuamente. Cosa succede se mettiamo insieme queste due dichiarazioni? In generale, le tue traduzioni dovrebbero essere dinamiche come il tuo gioco.

Ad esempio, una semplice frase "Accetto" si traduce in russo come una delle parole "Я согласен" / "Я согласна" / "Я согласно", a seconda del genere di chi parla (maschio / femmina / transgender | queer | domande). Se questa è una delle tue finestre di dialogo, il modulo linguistico dovrà scegliere una delle possibili traduzioni in fase di esecuzione in base al genere del tuo personaggio (supponendo che offri ai tuoi giocatori una scelta del genere).

La stessa frase, quando tradotta in giapponese, avrà di nuovo traduzioni diverse, a seconda del livello di formalità della relazione tra chi parla e chi ascolta. Pertanto, se introduci nel tuo gioco l'idea di reputazione, amicizia o livello di superiorità variabile (diciamo, il tuo personaggio può evolvere da principiante a generale), allora dovrai tenerne conto quando formerai la traduzione. (In realtà, questo non è specifico per il giapponese. Persino in inglese, nell'esercito non dici mai "Signore, sì, signore!" A qualcuno al di sotto di te in classifica.)

Avere un modo per saltare nel contesto.

I tuoi traduttori dovrebbero avere la possibilità di vedere il contesto in cui appare una particolare frase. A volte il contesto è ovvio, a volte devi vederlo / ascoltarlo / sperimentarlo da solo per tradurre correttamente qualcosa.

Anche una frase così semplice come "Questo libro è blu". non può essere tradotto in modo inequivocabile senza di me guardando il libro e vedendo quale particolare sfumatura di blu è.

Evita giochi di parole, giochi di parole e altri elementi specifici della lingua.

O forse non evitare, ma almeno avere in mente una strategia su cosa fare quando il gioco di parole non può essere tradotto. Perché probabilmente non lo farà.

Per lo meno non dovresti creare quest / puzzle / oggetti di gioco che si basano su determinate parole che hanno un doppio significato o che sono simili ad altre parole. Perché una volta tradotto, rompi il tuo gioco. (Ad esempio, in un vecchio gioco Fallout2 la missione principale era quella di trovare l'oggetto chiamato GECK; c'erano anche numerosi mostri "Gecko" (lucertole mutate) intorno al gioco; naturalmente hanno creato più riferimenti e ricerche attorno a questa somiglianza di nomi, che fatto buone traduzioni estremamente difficile).

Tirati su!

Localizzare un gioco è difficile. Ma è difficile per tutti. Se fai uno sforzo e lo fai correttamente, non passerà inosservato ai critici di gioco nel tuo paese di destinazione. Un gioco con una buona traduzione si distingue e guadagna maggiori profitti. Dopotutto, il testo è importante tanto per creare atmosfera nel gioco, quanto la grafica (ecco perché i vecchi giochi di ruolo basati su testo erano così coinvolgenti).


L'alternativa a "evitare il gioco di parole" è quella di includere uno scrittore creativo in un team di traduzione linguistica e consentire loro di modificare i significati letterali. FFXIV lo fa straordinariamente bene per la sua versione inglese, come un buon esempio.
Patrick Hughes,

3

Wil Shipley ha di gran lunga la migliore guida sulla localizzazione che abbia mai letto. Sfortunatamente è specifico per iPhone, ma si possono ancora ricavare informazioni comunemente utili. Inoltre, affronta la localizzazione delle risorse e l'interfaccia utente: due delle maggiori sfide nella localizzazione dei giochi che posso immaginare.


1

Sempre, SEMPRE trattano la lingua di origine come lingua localizzata.

Quindi, se la tua lingua di origine è EN, tieni tutte le risorse e le stringhe EN in una cartella EN separata e tira da lì.

Estrarre risorse EN attraverso la pipeline di localizzazione prevista.

In questo modo, riuscirai a rilevare forse l'80% dei problemi di localizzazione e sarai pronto per un processo di localizzazione molto più semplice.

Ho localizzato molti giochi e ho sempre guidato con questa pepita.


1

Vedo alcuni suggerimenti davvero fantastici qui!

Cercherò di fare un elenco degli errori più comuni che possono variare dal rendere più difficile la tua localizzazione al rovinare completamente il tuo gioco:

  • Pensare alla localizzazione come l'ultimo passo dello sviluppo del gioco
  • Non isolare le stringhe di testo dal codice sorgente
  • Concatenazione / interruzioni di riga nel mezzo di una frase.
  • Supponendo che tempi, date e unità non necessitino di localizzazione
  • Non fornire abbastanza materiale di riferimento ai traduttori / Non rispondere alle loro domande
  • Supponendo che tutto il testo del tuo gioco sarà in ASCII
  • Avere testo negli elementi visivi
  • Avere caselle di testo / UI rigide
  • Supponendo che tutte le lingue abbiano la stessa lunghezza dell'inglese
  • Utilizzo di Google Translate / traduzione automatica
  • Ignorando i fattori culturali
  • Non allocare budget sufficiente per la localizzazione

La localizzazione dovrebbe essere integrata allo sviluppo il più presto possibile e dovresti sempre tenerlo a mente durante la progettazione di un gioco.

Con la giusta pianificazione e un'attenta ricerca di mercato, ti risparmierai un sacco di problemi e spese più in là.

Mi capita di essere il fondatore di una società di localizzazione di giochi e abbiamo coperto la preparazione di un gioco per la localizzazione un paio di mesi fa nel nostro blog.

Ecco l'infografica che riassume quel post: https://magic.piktochart.com/output/18317297-9-steps-to-cheaper-game-development-with-localization

Il link al post completo che copre questi suggerimenti in modo più dettagliato si trova in fondo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.