Newsgroup: it.comp.giochi.avventure.testuali
Titolo: [Inform 7] IFcomp 2014 si avvicina!

IFcomp 2014, la nota competizione di narrativa interattiva in inglese, si avvicina 
http://www.ifcomp.org
 
 
Ho pensato quindi di rendere più facile la traduzione in inglese di avventure testuali scritte in italiano con Inform 7 e il "MilleUna Framework".
Finora il framework era finalizzato all'italiano, ma recuperando alcune estensioni inglesi non disponibili e traducendo quelle solo in italiano, il legame con la nostra lingua non è più così stretto.
Ora per convertire un'avventura che usi il "MilleUna" da italiano a inglese (o viceversa) è "sufficiente" preoccuparsi di tradurre i nomi degli oggetti e le frasi tra virgolette, mentre prima mancavano del tutto "blocchi da costruzione" compatibili.
 
Per provare online l'esempio nelle due versioni: 
http://youdev.it/if
 
Per saperne di più: 
http://youdev.it/page/MilleUna-Framework
 
 


Ciao.
 
Domanda:
i testi tra virgolette possono essere agevolmente catalogati e raccolti 
in un unico file?
 
Sarebbe comodo, infatti, usare nel sorgente solo dei riferimenti stile 
array simbolico il cui indice sia una stringa che ricorda il contenuto 
mentre il contenuto effettivo potrebbe essere in un include che � 
diverso a seconda della lingua scelta.
 
Un po' come � gi� previsto ora per le answer delle regole.
 
Esempio sorgente:
instead of examining the telephone:
    say phrases(examining_tel);
 
Esempio include o altra parte del sorgente:
phrases is an array.
phrases(examining_tel) is "testo in lingua".
 
pg

 diverso a seconda della lingua scelta.
 
Stavo appunto provando qual è il metodo più comodo (almeno per me). L'esempio del framework non fa altro che suddividere le parti del sorgente dipendenti dalla lingua in due versioni. Non mi sembra che il metodo delle "responses" sia applicabile (in modo comodo) in questo caso, perché richiederebbe definizioni di regole a tutto spiano.
 
Infatti il problema è la definizione degli oggetti che, nelle due lingue, devono avere nomi diversi. Forse si potrebbe procedere in questo modo:
 
Nel codice comune alle due lingue:
 
  The box (f) is a closed, openable container. The description is "[desc-box]"
 
Nella parte inglese:
 
  To say desc-box: say "A large [box] that [are] [if the box is closed]closed.[otherwise]open."
 
Nella parte italiana:
 
  To say desc-box: say "Una grande [box] che [sei] [if the box is closed][chiuso].[otherwise][aperto]."
  The printed name of the box is "scatola".
 
Scrivere [box] è necessario per attivare gli hyperlink, mentre [sei] serve solo se si vuole cambiare tempo alla storia (presente/passato) e [aperto]/[chiuso] servono se si pensa di cambiare oggetto nel seguito ("box" potrebbe diventare "scatolone" - così si dovrebbe cambiare genere a box togliendo (f), ma rimarrebbe quell'"Una" nella descrizione.
Comunque se si sceglie il tempo fin dall'inizio e gli oggetti sono già ben definiti si risparmia un sacco di lavoro.
 
Ma tornando alla tua domanda, per quanto riguarda, cioè, gli array di frasi, io farei così:
 
Nel codice comune (immagina tante regole tipo questa):
 
    Instead of opening the box:
      if the player does not carry the magic wand:
        say "[box-is-blocked-because]";
      otherwise:
        say "[box-opens]";
        now the box is open.
 
Poi nella parte italiana e inglse si definirebbero tanti:
 
    To say box-is-blocked-because: ...
    To say box-opens: ...
 
Oppure di potrebbero numerare le risposte:
 
    To say answer#45: ...
 
però un testo corto descrittivo è più comprensibile.
 
Proverò un'avventurina "bilingue" seguendo queste idee per vedere se è fattibile senza metterci più del doppio del tempo ;)
 

 potrebbe procedere in questo modo...
 
No, ritiro tutta la parte sugli oggetti. La proprietà "printed name" non funziona perché il giocatore italiano nei suoi comandi non potrebbe scrivere:
 
  prendi la scatola
 
visto che un oggetto "scatola" non c'è. Infatti dovrebbe scrivere:
 
  prendi la box
 
A meno di non usare tanti:
 
  understand "scatola" as box.
 
Ma allora tanto vale seguire la strada dell'esempio "Titolo.infrom"... oppure no? Boh?
 
Il resto del post (sui "tu say" al posto degli array) invece mi sembra corretto e indica il modo più semplice di procedere.
 

   understand "scatola" as box.
 
Ho fatto alcune prove e il metodo migliore per creare avventure testuali bilingue (nel senso di pubblicabili in versione sia italiana che inglese) mi pare sia quello seguito nel nuovo esempio del framework che si può scaricare da qui: 
https://sourceforge.net/projects/milleuna/files/Extensions/3.0/
 
 
In sintesi.
1) All'inizio si deve inserire il "MilleUna Framework" per la lingua scelta e anche il "release along with" specifico. Per esempio:
 
    "Titolo" by Autore (in Italian)
 
    Include Milleuna Framework IT by Leonardo Boselli.
    Include Exit Descriptions IT by Leonardo Boselli.
    Release along with cover art, the source text, a file of "Introduzione alle Avventure Testuali" called "Introduzione alle Avventure Testuali.pdf", a "MilleUna-it" website and a "MilleUna-it" interpreter.
 
(nell'esempio sono disponibili entrambe le versioni, "commentabili" alternativamente)
 
2) Poi si deve scrivere l'avventura in inglese, definendo i testi con dei "to say...", a meno che non siano all'interno di "rules" dove vanno marcate con delle lettere (A), (B) ecc. per sfruttare il meccanismo delle responses.
 
3) Poi, per la versione italiana, occorre inserire sezioni del tipo:
 
    Section IT (for use with Italian Language by Massimo Stella)
 
in cui si inseriscono le modifiche necessarie, che sono:
 
  a) traduzione di nomi degli oggetti con una combinazione di Understand e Printed Name:
 
    Understand "tavolo" as table. The printed name of table is "tavolo".
 
in cui occorre anche specificare la proprietà "feminine gender" se l'oggetto è di genere femminile.
 
  b) Definizione dei "to say..." con testo in italiano
 
  c) Ridefinizione in italiano delle "responses" delle "rules"
 
Mi pare sia tutto quello che si deve fare.
 
Il vantaggio rispetto al metodo di tenere due progetti separati consiste nel fatto che una modifica si ripercuote in entrambe le versioni senza possibilità di errori o dimenticanze.
 
Naturalmente se la versione inglese non interessa, è tutto molto più semplice. Si può procedere come spiegato nel tutorial su 
http://youdev.it
 riguardante l'estensione "Italian Language" e il sorgente risulta anche più leggibile ;)