Creo que para agregar traducciones, aún podría usar XML para la lógica como se indicó anteriormente . Cuando te encuentres con ese tipo de complejidad, debes escribir tu propia herramienta de diálogo. Su texto de diálogo se almacenaría como una clave para una base de datos que podría intercambiar según el idioma que desea mostrar.
Por ejemplo, podrías tener:
<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>
Luego, el renderizador de texto de búsqueda reemplazará "Localize.FixMyCar" por el texto traducido adecuadamente.
Su herramienta mostraría lo que el jugador vería en un idioma seleccionable junto con el XML sin editar editable.
Del mismo modo, podría usar algo como esto en el ejemplo al que hizo referencia :
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
null,
ConversationStates.QUEST_OFFERED,
Localization[ "BringMeABeer" ],
null);
Si sus claves son lo suficientemente descriptivas, no tener el texto completo no debería ser un problema.
Algo como esto también podría ser útil:
Localization[ "<Location>.<NPC_name>.<Dialogue_text_key>" ];