Penso che per l'aggiunta di traduzioni, potresti ancora usare XML per la logica come indicato sopra . Quando stai entrando in quel tipo di complessità, dovresti scrivere il tuo strumento di dialogo. Il testo del tuo dialogo verrebbe archiviato come chiave di un database che potresti scambiare a seconda della lingua che desideri visualizzare.
Ad esempio potresti avere:
<dialogue id="101" condition="!npc.carsFixed">
<message>Localize.FixMyCar</message>
<choices>
<choice condition="hero.carFixingSkill > 5" priority="7" id="Localize.Sure">
<command>hero.carFixingSkills += 1</command>
<command>npc.carFixed = true</command>
<command>hero.playSmokeAnimation()</command>
<command>nextDialogue = 104</command>
</choice>
<choice condition="hero.carFixingSkill <= 5" id="Localize.CantFix">
<command>nextDialogue = 105</command>
</choice>
<choice id="Localize.FixYourself">
<command>npc.likesHero -= 1</command>
</choice>
</choices>
</dialogue>
Avresti quindi il renderizzatore di testo di ricerca sostituire "Localize.FixMyCar" con il testo tradotto in modo appropriato.
Il tuo strumento mostrerebbe ciò che il giocatore vedrebbe in una lingua selezionabile insieme all'XML grezzo modificabile.
Allo stesso modo potresti usare qualcosa del genere dall'esempio a cui hai fatto riferimento :
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
null,
ConversationStates.QUEST_OFFERED,
Localization[ "BringMeABeer" ],
null);
Se le tue chiavi sono abbastanza descrittive, non avere il testo completo non dovrebbe essere un problema.
Qualcosa del genere potrebbe anche essere utile:
Localization[ "<Location>.<NPC_name>.<Dialogue_text_key>" ];