54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
| 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 translation_key: String = line.get(&"translation_key", line.text)
 | |
| 
 | |
| 		if translation_key in known_keys: continue
 | |
| 
 | |
| 		known_keys.append(translation_key)
 | |
| 		translated_lines.append(line)
 | |
| 		if translation_key == line.text:
 | |
| 			msgs.append(PackedStringArray([line.text.replace('"', '\"'), "", "", line.get("notes", "")]))
 | |
| 		else:
 | |
| 			msgs.append(PackedStringArray([line.text.replace('"', '\"'), line.translation_key.replace('"', '\"'), "", line.get("notes", "")]))
 | |
| 
 | |
| 	return msgs
 | |
| 
 | |
| 
 | |
| func _get_recognized_extensions() -> PackedStringArray:
 | |
| 	return ["dialogue"]
 |