Added dialogue manager plugin
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
class_name DMTranslationParserPlugin extends EditorTranslationParserPlugin
|
||||
|
||||
|
||||
## Cached result of parsing a dialogue file.
|
||||
var data: DMCompilerResult
|
||||
## List of characters that were added.
|
||||
var translated_character_names: PackedStringArray = []
|
||||
var translated_lines: Array[Dictionary] = []
|
||||
|
||||
|
||||
func _parse_file(path: String) -> Array[PackedStringArray]:
|
||||
var msgs: Array[PackedStringArray] = []
|
||||
var file: FileAccess = FileAccess.open(path, FileAccess.READ)
|
||||
var text: String = file.get_as_text()
|
||||
|
||||
data = DMCompiler.compile_string(text, path)
|
||||
|
||||
var known_keys: PackedStringArray = PackedStringArray([])
|
||||
|
||||
# Add all character names if settings ask for it
|
||||
if DMSettings.get_setting(DMSettings.INCLUDE_CHARACTERS_IN_TRANSLATABLE_STRINGS_LIST, true):
|
||||
translated_character_names = [] as Array[DialogueLine]
|
||||
for character_name: String in data.character_names:
|
||||
if character_name in known_keys: continue
|
||||
|
||||
known_keys.append(character_name)
|
||||
|
||||
translated_character_names.append(character_name)
|
||||
msgs.append(PackedStringArray([character_name.replace('"', '\"'), "dialogue", "", DMConstants.translate("translation_plugin.character_name")]))
|
||||
|
||||
# Add all dialogue lines and responses
|
||||
var dialogue: Dictionary = data.lines
|
||||
for key: String in dialogue.keys():
|
||||
var line: Dictionary = dialogue.get(key)
|
||||
|
||||
if not line.type in [DMConstants.TYPE_DIALOGUE, DMConstants.TYPE_RESPONSE]: continue
|
||||
|
||||
var static_id: String = line.get(&"static_id", line.text)
|
||||
if static_id.is_empty():
|
||||
static_id = line.text
|
||||
|
||||
if static_id in known_keys: continue
|
||||
|
||||
known_keys.append(static_id)
|
||||
translated_lines.append(line)
|
||||
|
||||
var has_static_id: bool = static_id != "" and static_id != line.text
|
||||
|
||||
var message: String = static_id.replace('"', '\"') if has_static_id else line.text
|
||||
var context: String = "dialogue"
|
||||
var plural: String = ""
|
||||
var extra_details: PackedStringArray = []
|
||||
if line.has("character"):
|
||||
extra_details.append("Character: %s" % line.get("character", ""))
|
||||
if has_static_id and not line.text.is_empty():
|
||||
extra_details.append("Line: %s" % line.text)
|
||||
if line.has("notes"):
|
||||
extra_details.append("Notes: %s" % line.get("notes", ""))
|
||||
var notes: String = "\n".join(extra_details)
|
||||
msgs.append(PackedStringArray([
|
||||
message,
|
||||
context,
|
||||
plural,
|
||||
notes,
|
||||
key
|
||||
]))
|
||||
|
||||
return msgs
|
||||
|
||||
|
||||
func _get_recognized_extensions() -> PackedStringArray:
|
||||
return ["dialogue"]
|
||||
Reference in New Issue
Block a user