Tôi nghĩ rằng để thêm vào các bản dịch, bạn vẫn có thể sử dụng XML cho logic như đã nêu ở trên . Khi bạn rơi vào loại phức tạp đó, bạn nên viết công cụ đối thoại của riêng mình. Văn bản hội thoại của bạn sẽ được lưu trữ dưới dạng khóa cho cơ sở dữ liệu mà bạn có thể trao đổi tùy theo ngôn ngữ bạn muốn hiển thị.
Ví dụ: bạn có thể có:
<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>
Sau đó, bạn sẽ có trình kết xuất văn bản tìm kiếm thay thế "Localize.FixMyCar" bằng văn bản được dịch phù hợp.
Công cụ của bạn sẽ hiển thị những gì người chơi sẽ thấy bằng ngôn ngữ có thể chọn cùng với XML thô có thể chỉnh sửa.
Tương tự như vậy, bạn có thể sử dụng một cái gì đó như thế này từ ví dụ bạn đã tham chiếu :
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
null,
ConversationStates.QUEST_OFFERED,
Localization[ "BringMeABeer" ],
null);
Nếu các khóa của bạn đủ mô tả không có văn bản hoàn chỉnh thì đó không phải là vấn đề.
Một cái gì đó như thế này cũng có thể hữu ích:
Localization[ "<Location>.<NPC_name>.<Dialogue_text_key>" ];