Aiuto - Cerca - Utenti - Calendario
Versione completa: Istruzioni per inserire i testi tradotti nel gioco
OldGamesItalia > Traduzioni > Traduzioni in corso > System Shock [GTO]
mikeoldfield1978
Dunque, grazie all'aiuto di Federico è stato possibile creare un tool che consenta:

  • di estrarre tutto il testo del gioco, comprese email, logs, altri messaggi vari,nomi di cose,oggetti,armi,interfaccia grafica etc..(che è contenuto nel file cybrstrng.res) creando un apposito file di testo (che potete trovare in allegato al messaggio)
  • di "re-iniettare" tale file una volta tradotto (è importante che questo .txt originale venga SOVRASCRITTO, non create un altro file di testo) all'interno del cybrstrng.res, traducendo a tutti gli effetti il gioco


Ora, il problema è che allo stato attuale il tool presenta un piccolo bug che non gli consente di essere utilizzato sotto Windows (lui l'ha creato usando Linux e poi ricompilato per Windows, però ci sono ancora problemi di compatibilità), quindi per il momento non è possibile nè estrarre ne re-iniettare nel gioco tale .txt ,a meno che non usiate Linux. Infatti il file allegato è stato creato da Federico.
Tuttavia, già da ora possiamo fare alcune considerazioni:

  • potete tradurre liberamente in senso orizzontale ogni riga, ma non cancellate assolutamente il segno " § " con il quale ogni riga inizia
  • Non usate ASSOLUTAMENTE LETTERE ACCENTATE! Per esempio, per scrivere perchè digitate: perche'
  • non andate MAI a capo (cioè non lasciate MAI una riga vuota tra una riga e l'altra, ovvero non schiacciate mai INVIO)
  • di tanto in tanto potreste trovare righe che contengono queste parole: " §chunk2152§ " o da sole oppure dopo altro testo: potete tradurre liberamente, MA NON spostate mai tali scritte, ne tantomeno i segnetti "§", cioè non spostate l'ordine con il quale li trovate (se per esempio si trovano DOPO una frase, voi traducete liberamente quella frase, e lasciatelo DOPO, non mettetelo prima). Il segnetto, e le righe §chunkXXXX§ serviranno infatti al programma per capire dove reiniettare le stringhe nel gioco tradotto.
  • attualmente siamo in tre a tradurre, tuttavia prima dovremmo cercare di ultimare il dizionario interattivo. L'idea era di farlo a partire dal file stringhe: magari ce lo "smezziamo" in tre parti uguali e cerchiamo le parole più difficili e caratteristiche del gioco, che secondo noi andrebbero tradotte in modo appropriato. Poi postiamo la nostra traduzione sul forum (l'excel) e li mettiamo insieme.




Che dite, può andare?
Dubbi, suggerimenti, chiarimenti?
PS per Federico: se ho sbagliato a dire qualcosa, o ritieni debba essere aggiunto qualcosa fammelo notare!
Federico Santandrea
CITAZIONE (mikeoldfield1978 @ 6 Jan 2008, 11:39) *
PS per Federico: se ho sbagliato a dire qualcosa, o ritieni debba essere aggiunto qualcosa fammelo notare!


Tutto ok, ma vorrei fare una piccola precisazione. Ovvero: il programma non funziona sotto Windows solo perché non sono in grado, sul mio PC, di compilarlo per tale sistema operativo. Non ha bugs di questo genere, quindi chiunque abbia un PC Windows e familiarità con la compilazione di sorgenti in C può semplicemente ricompilare il mio programma perché funzioni con Windows, senza che vi sia bisogno di fare alcuna modifica al codice sorgente [dato che esso usa solo le librerie standard del C, disponibili per ogni piattaforma]. Quindi, chi si offre mi contatti via e-mail o MP e gli manderò i sorgenti.

Ho inoltre scoperto un piccolo bug, stavolta vero, che a volte offsetta di 1 certi subchunk, quando la stringa da visualizzare è posta alla fine del chunk stesso. Sistemarlo è una banalità e lo farò subito: notate però che questo bug è nel programma inject, e NON nell'extract: per cui il file Stringhe.txt che ho mandato a Mike, e che lui ha postato in questo topic, è totalmente valido e può già essere utilizzato per compilare il Dizionario.

Thanks for your time.

Deco*

edit: Aggiungo che, nel leggere il file, vi può capitare di vedere caratteri strani in alcune stringhe, i quali spezzano le parole in più parti. Eliminateli ed ignorateli, trattando le parole come se fossero complete. Servono a spiegare al gioco dove spezzare in sillabe alcune parole "strane" che il motore di sillabazione interno non riuscirebbe a dividere correttamente- ma tanto, tale motore non funziona con l'italiano. Dunque è possibile tranquillamente ignorarli.
elianto
io comincio a scrivere il dizionario interattivo...
auguratemi buona fortuna :-D
mikeoldfield1978
good luck!
DK
Manda pure i sorgenti a me che li compilo io per Windows.
Federico Santandrea
CITAZIONE (DK @ 6 Jan 2008, 18:25) *
Manda pure i sorgenti a me che li compilo io per Windows.


Benissimo. Te li manderò appena avrò corretto il piccolo bug.
DK
Ecco la versione 1.1 - dell'8 gennaio! biggrin.gif - forse è quella con il bug corretto!
Clicca per vedere l'allegato
mikeoldfield1978
velocissimo!

PS: però mi crasha ancora... gmorning.gif
DK
Che cosa ti crasha? Il gioco?
Intanto per verificare la correttezza delle operazioni farei questa prova:
- copia lo stesso file (o più files) del gioco in due cartelle differenti
- estrai il testo dal file di una delle cartelle
- senza modificare il testo, reinseriscilo
- ora in una cartella hai ancora il file originale del gioco, nell'altra il file "modificato"
- fai una comparazione binaria esatta tra i due file, e vedi se sono identici
- se c'è qualche byte fuori posto, allora c'è qualcosa di sbagliato nel reinserimento
- se corrisponde bisogna vedere cosa è che lo fa crashare; in questo caso bisognerebbe procedere traducendo piccoli pezzetti e inserendoli, verificando quando si verifica il crash.

P.S. Una cosa a Federico; tenuto conto che in Windows gli "a capo" sono due caratteri mentre in Unix è uno solo?
mikeoldfield1978
crasha il Tool.
Ti dico quello che faccio: metto il file "extract.exe" e il file del gioco da estrarre (cybrstrng.res) in una stessa cartella. Poi dal promp ti comandi di windows, una volta entrato in tale cartella, digito:

extract cybrstrng.res prova.txt


e crasha il programma
Federico Santandrea
CITAZIONE (DK @ 6 Jan 2008, 21:50) *
Che cosa ti crasha? Il gioco?
Intanto per verificare la correttezza delle operazioni farei questa prova:
- copia lo stesso file (o più files) del gioco in due cartelle differenti
- estrai il testo dal file di una delle cartelle
- senza modificare il testo, reinseriscilo
- ora in una cartella hai ancora il file originale del gioco, nell'altra il file "modificato"
- fai una comparazione binaria esatta tra i due file, e vedi se sono identici
- se c'è qualche byte fuori posto, allora c'è qualcosa di sbagliato nel reinserimento
- se corrisponde bisogna vedere cosa è che lo fa crashare; in questo caso bisognerebbe procedere traducendo piccoli pezzetti e inserendoli, verificando quando si verifica il crash.

P.S. Una cosa a Federico; tenuto conto che in Windows gli "a capo" sono due caratteri mentre in Unix è uno solo?


Dunque:
Ho già fatto io il test di estrazione e reiniezione. I file NON saranno uguali ad un confronto binario, anche la dimensione sarà addirittura diversa, ma questo è un fatto voluto, in quanto come ho letto nella descrizione ufficiale dei file .RES della LG, linkata su questo forum un po' di tempo fa, la chunk directory può essere posta ovunque nel file, tanto il suo offset è specificato nell'header: come si vede in quel sito tutti i giochi di LG hanno la directory in cima, ma System Shock ce l'ha in fondo per una storia di tool usati per generare quei files. Il mio programma la mette all'inizio per rispettare lo standard ma funziona comunque.
In secondo luogo sì, ho tenuto conto della differenza di ritorni a capo Windows/Unix completamente.

Poi, l'eseguibile di Mike crashava, ma l'ho crosscompilato io sotto Unix ed è probabile che abbia sbagliato.
DK
Mike, ma ti crasha anche il tool che ho compilato io? Mi sembra strano...
Mi manderesti il file .res per fare eventuali prove?
mikeoldfield1978
te l'ho mandato via email, controlla appena puoi!
icon_salut.gif
DK
Allora, c'è qualche problema.
Credo che se ci sentiamo via mail noi 3 (Federico, Mike, DK) facciamo prima e saltiamo eventuali messaggi tecnici/di prova che in questa discusione poco interessano.
Ho inserito qualche messaggio di debug, quando vado ad estrarre il file .res (che penso sia originale) si blocca.
Ho identificato il problema; file lg.c, funzione lg_open_file, ciclo j annidato nel ciclo i (ce n'è solo uno).
A me si ferma sempre i = 1 e j = 0, ora non ho proprio il tempo di controllare precisamente su quale blocco fisico del file da' errore; ma potrebbe essere anche un'allocazione di memoria (ho visto parecchio lavoro di pointer e allocazioni di memoria) visto che il programma viene terminato bruscamente senza nessun errore.

Non potendo estrarre i dati, ho provato ad inserire il file stringhe.txt, fornito da Mike (nel primo post di questo thread).
Sembra funzionare senza problemi, e nel file ci sono i dati (a parte la stringa iniziale che ha un 0x0d in più prima di 0x0a, al 16 byte - forse è quello che è sbagliato?).
Poi, dopo aver inserito, ho provato ad estrarre, e, stranamente funziona, ma il txt risultante è anomalo!
Sono tutte stringhe tipo quelle qui sotto

§chunk16928§

§chunk69§

Non saprei dire come mai sotto Linux funziona tutto perfettamente!
Federico, qualche idea?
Federico Santandrea
CITAZIONE (DK @ 7 Jan 2008, 21:33) *
Allora, c'è qualche problema.
Credo che se ci sentiamo via mail noi 3 (Federico, Mike, DK) facciamo prima e saltiamo eventuali messaggi tecnici/di prova che in questa discusione poco interessano.
Ho inserito qualche messaggio di debug, quando vado ad estrarre il file .res (che penso sia originale) si blocca.
Ho identificato il problema; file lg.c, funzione lg_open_file, ciclo j annidato nel ciclo i (ce n'è solo uno).
A me si ferma sempre i = 1 e j = 0, ora non ho proprio il tempo di controllare precisamente su quale blocco fisico del file da' errore; ma potrebbe essere anche un'allocazione di memoria (ho visto parecchio lavoro di pointer e allocazioni di memoria) visto che il programma viene terminato bruscamente senza nessun errore.

Non potendo estrarre i dati, ho provato ad inserire il file stringhe.txt, fornito da Mike (nel primo post di questo thread).
Sembra funzionare senza problemi, e nel file ci sono i dati (a parte la stringa iniziale che ha un 0x0d in più prima di 0x0a, al 16 byte - forse è quello che è sbagliato?).
Poi, dopo aver inserito, ho provato ad estrarre, e, stranamente funziona, ma il txt risultante è anomalo!
Sono tutte stringhe tipo quelle qui sotto

§chunk16928§

§chunk69§

Non saprei dire come mai sotto Linux funziona tutto perfettamente!
Federico, qualche idea?


Quello che posso dirti è che la stringa header è: LG Res File v2\x0d\x0a\x1a. Quindi un \x0d _deve_ esserci. Nei miei file originali c'è, sempre. In quello di Mike non c'è?! Estremamente strano. Voglio fare una prova. Mando il _mio_ file res ad uno di voi due. E guardate se riuscite ad estrarlo sulla vostra macchina.
Giuro che il codice non mi dà segfault. Mi sembra così assurdo che sia un problema di portabilità, le librerie sono più standard che si può e ho scritto tutti i ritorni a capo come bytes, non c'è nessuna istruzione che lo fa in automatico. Io credo che sia una versione diversa di System Shock.
DK
CITAZIONE
Quello che posso dirti è che la stringa header è: LG Res File v2\x0d\x0a\x1a. Quindi un \x0d _deve_ esserci. Nei miei file originali c'è, sempre. In quello di Mike non c'è?!

ce ne son due blush.gif
LG Res File v2\x0d\x0d\x0a\x1a

CITAZIONE
Giuro che il codice non mi dà segfault.

nemmeno a me, ma funziona "strano".

CITAZIONE
Mi sembra così assurdo che sia un problema di portabilità, le librerie sono più standard che si può e ho scritto tutti i ritorni a capo come bytes, non c'è nessuna istruzione che lo fa in automatico. Io credo che sia una versione diversa di System Shock.

in effetti è semplice C, dubito problemi di portabilità (ma non si sa mai).
Di SystemShock ce ne son due mi pare, CD e Floppy.
Sentiamo Mike.
mikeoldfield1978
CITAZIONE
Di SystemShock ce ne son due mi pare, CD e Floppy.
Sentiamo Mike.


quello che ti ho mandato è relativo alla versione CD! Cmq non credo che il file cambi tra le due versioni: se non erro, l'unica differenza tra la versione CD e la floppy è la presenza nella prima dei filmati di intermezzo in SVGA...
Federico Santandrea
CITAZIONE (mikeoldfield1978 @ 8 Jan 2008, 13:45) *
CITAZIONE
Di SystemShock ce ne son due mi pare, CD e Floppy.
Sentiamo Mike.


quello che ti ho mandato è relativo alla versione CD! Cmq non credo che il file cambi tra le due versioni: se non erro, l'unica differenza tra la versione CD e la floppy è la presenza nella prima dei filmati di intermezzo in SVGA...


In verità tutti i files di dati sono comunque stati rivisti e rigenerati anche se sono praticamente identici..
Propongo di cambiare il topic in Conversione del tool in Win32 smilies3.gif
DK
CITAZIONE
Propongo di cambiare il topic in Conversione del tool in Win32

shocked.gif
noooo, non mi dire che a te i tool funzionano perfettamente (dannata portabilità!)

Ma scusa, allora non conviene fare una prova?
Mike manda a te il txt da inserire, te con i tool funzionanti lo inserisci e gli spedisci il .res così lui lo prova nel gioco e abbiamo la certezza che il problema è della versione Win32, su cui potremo fare un debug.
Federico Santandrea
CITAZIONE (DK @ 10 Jan 2008, 22:23) *
CITAZIONE
Propongo di cambiare il topic in Conversione del tool in Win32

shocked.gif
noooo, non mi dire che a te i tool funzionano perfettamente (dannata portabilità!)

Ma scusa, allora non conviene fare una prova?
Mike manda a te il txt da inserire, te con i tool funzionanti lo inserisci e gli spedisci il .res così lui lo prova nel gioco e abbiamo la certezza che il problema è della versione Win32, su cui potremo fare un debug.


Eh? A me i tool hanno funzionato perfettamente fin dal primo istante- l'origine della discussione era proprio quella. :D
Comunque abbiamo già fatto la prova che hai detto - e va. :D

¿Ma va in segfault anche a te o solo a Mike?
mikeoldfield1978
CITAZIONE
Comunque abbiamo già fatto la prova che hai detto - e va. :D


si, già l'abbiamo fatto traducendo un piccolo pezzettino, e funziona: il res che mi ha rispedito si vede tradotto all'interno del gioco... metal.gif
DK
CITAZIONE
Ma va in segfault anche a te o solo a Mike?

a me non da' nessun errore, solo che esce bruscamente, senza dire niente :(

Che versione del compilatore GCC hai usato? Ormai bisogna pensarle tutte!
Federico Santandrea
CITAZIONE (DK @ 11 Jan 2008, 22:46) *
CITAZIONE
Ma va in segfault anche a te o solo a Mike?

a me non da' nessun errore, solo che esce bruscamente, senza dire niente :(

Che versione del compilatore GCC hai usato? Ormai bisogna pensarle tutte!


Non può essere una questione di versione..
Piuttosto, sai cosa....

Il fatto di quel §chunkXXXX§ con il numero strano..

Non so se possa centrare qualcosa, ma mi è venuta alla mente una cosa...

Byte sex. Little endian/big endian. Non ne ho tenuto conto. Ho preso gli unsigned int nell'ordine in cui li dava la mia macchina. Sparatemi. ._.
DK
CITAZIONE
Little endian/big endian. Non ne ho tenuto conto. Ho preso gli unsigned int nell'ordine in cui li dava la mia macchina. Sparatemi. ._.

penso non significhi nulla; cioè, se tu hai un x86 (o hai un PowerPC?), il formato, anche sotto Linux (che io sappia) è Little Endian, lo stesso vale per Win, o per altri S.O. per x86, mentre il formato Big Endian viene utilizzato principalmente da Motorola e PowerPC.
Diversamente, se il formato del file è specificatamente in LE o BE, a prescindere dalla piattaforma, deve essere letto in quel modo.
Federico Santandrea
CITAZIONE (DK @ 12 Jan 2008, 14:26) *
CITAZIONE
Little endian/big endian. Non ne ho tenuto conto. Ho preso gli unsigned int nell'ordine in cui li dava la mia macchina. Sparatemi. ._.

penso non significhi nulla; cioè, se tu hai un x86 (o hai un PowerPC?), il formato, anche sotto Linux (che io sappia) è Little Endian, lo stesso vale per Win, o per altri S.O. per x86, mentre il formato Big Endian viene utilizzato principalmente da Motorola e PowerPC.
Diversamente, se il formato del file è specificatamente in LE o BE, a prescindere dalla piattaforma, deve essere letto in quel modo.


Ho un x86, e il file è in little endian. Per questo motivo ho copiato direttamente dalla memoria le strutture senza stare a fare molti controlli. Pensavo che uno di voi due avesse una roba big endian, per fortuna non è il caso fluffle.gif
DK
Uff, mi sa che tocca fare un piccolo debug :|
Nel frattempo, per provare, te potresti fare da tramite a Mike per compilare i .res con la sua traduzione, un po' scomodo lo so...
mikeoldfield1978
infatti nel frattempo credo faremo cosi...
elianto
rivango questa discussione, ormai antica di mesi...

tra poco mi cimenterò con la compilazione dei file txt dei testi, seguendo le istruzioni date.
Solo una cosa, sperando che (come però sono sicuro che è) federico legga questo messaggio: la lunghezza della riga di testo.

Cioè, di quanto si può sforare per una singola stringa? (esempio: dall'inglese PLASTIQUE all'italiano ESPLOSIVO AL PLASTICO, la differenza è giusta o è troppa?)
E lo stesso vale dei testi più lunghi, dove in inglese c'è una certa formattazione (limitatamente all'andare a capo). Devo rifarmi a quella cercando di rendere la forma della traduzione la più simile possibile, oppure anche qui ho delle libertà di compilazioni? E quali, se ce ne fossero?

Grazie... che piano piano ne veniamo fuori :D
Questa è la versione 'lo-fi' del forum. Per visualizzare la versione completa con molte più informazioni, formattazione ed immagini, per favore clicca qui.
Invision Power Board © 2001-2020 Invision Power Services, Inc.