Je pense que pour ajouter des traductions, vous pouvez toujours utiliser XML pour la logique décrite ci-dessus . Lorsque vous entrez dans ce type de complexité, vous devez écrire votre propre outil de dialogue. Votre texte de dialogue serait stocké en tant que clé d'une base de données que vous pourriez permuter en fonction de la langue que vous souhaitez afficher.
Par exemple, vous pourriez avoir:
<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>
Vous auriez alors le moteur de rendu de la quête remplacer "Localize.FixMyCar" par le texte traduit de manière appropriée.
Votre outil afficherait ce que le lecteur verrait dans une langue sélectionnable à côté du XML brut éditable.
De même, vous pouvez utiliser quelque chose comme ceci à partir de l' exemple que vous avez cité :
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
null,
ConversationStates.QUEST_OFFERED,
Localization[ "BringMeABeer" ],
null);
Si vos clés sont suffisamment descriptives, ne pas avoir le texte complet ne devrait pas être un problème.
Quelque chose comme ça pourrait être utile aussi:
Localization[ "<Location>.<NPC_name>.<Dialogue_text_key>" ];