Ich denke, für das Hinzufügen von Übersetzungen könnten Sie immer noch XML für die Logik verwenden, wie oben angegeben . Wenn Sie in diese Art von Komplexität geraten, sollten Sie Ihr eigenes Dialogwerkzeug schreiben. Ihr Dialogtext wird als Schlüssel zu einer Datenbank gespeichert, die Sie je nach der Sprache, die Sie anzeigen möchten, austauschen können.
Zum Beispiel könnten Sie haben:
<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>
Dann müsste der Quest-Text-Renderer "Localize.FixMyCar" durch den entsprechend übersetzten Text ersetzen.
Ihr Tool zeigt das, was der Player sehen würde, in einer auswählbaren Sprache neben dem bearbeitbaren unformatierten XML an.
In ähnlicher Weise könnten Sie so etwas aus dem Beispiel verwenden, auf das Sie verwiesen haben :
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
null,
ConversationStates.QUEST_OFFERED,
Localization[ "BringMeABeer" ],
null);
Wenn Ihre Schlüssel aussagekräftig genug sind, sollte es kein Problem sein, nicht den vollständigen Text zu haben.
So etwas könnte auch nützlich sein:
Localization[ "<Location>.<NPC_name>.<Dialogue_text_key>" ];