41 lines
1.3 KiB
GDScript
41 lines
1.3 KiB
GDScript
|
extends EditorTranslationParserPlugin
|
||
|
|
||
|
|
||
|
const DialogueConstants = preload("res://addons/dialogue_manager/constants.gd")
|
||
|
|
||
|
|
||
|
func _parse_file(path: String, msgids: Array, msgids_context_plural: Array) -> void:
|
||
|
var file: FileAccess = FileAccess.open(path, FileAccess.READ)
|
||
|
var text: String = file.get_as_text()
|
||
|
|
||
|
var data: DialogueManagerParseResult = DialogueManagerParser.parse_string(text, path)
|
||
|
var known_keys: PackedStringArray = PackedStringArray([])
|
||
|
|
||
|
# Add all character names
|
||
|
var character_names: PackedStringArray = data.character_names
|
||
|
for character_name in character_names:
|
||
|
if character_name in known_keys: continue
|
||
|
|
||
|
known_keys.append(character_name)
|
||
|
|
||
|
msgids_context_plural.append([character_name, "dialogue", ""])
|
||
|
|
||
|
# Add all dialogue lines and responses
|
||
|
var dialogue: Dictionary = data.lines
|
||
|
for key in dialogue.keys():
|
||
|
var line: Dictionary = dialogue.get(key)
|
||
|
|
||
|
if not line.type in [DialogueConstants.TYPE_DIALOGUE, DialogueConstants.TYPE_RESPONSE]: continue
|
||
|
if line.translation_key in known_keys: continue
|
||
|
|
||
|
known_keys.append(line.translation_key)
|
||
|
|
||
|
if line.translation_key == "" or line.translation_key == line.text:
|
||
|
msgids_context_plural.append([line.text, "", ""])
|
||
|
else:
|
||
|
msgids_context_plural.append([line.text, line.translation_key, ""])
|
||
|
|
||
|
|
||
|
func _get_recognized_extensions() -> PackedStringArray:
|
||
|
return ["dialogue"]
|