fix: handles translation keys that have only one word (i.e. no spaces… (#596)
* fix: handles translation keys that have only one word (i.e. no spaces) in the actual dialogue * fix: fixes dialogue that starts with a space * fix: issues warning if translation key cannot be found (same for a voice file that can't be found) and uses the untranslated text in this case
This commit is contained in:
@@ -46,7 +46,9 @@ func _init(command_string):
|
||||
parameters.append(
|
||||
parameter
|
||||
)
|
||||
elif ":" in parameter and '"' in parameter:
|
||||
elif ':"' in parameter and (parameter.ends_with(':"') or not parameter.ends_with('"')):
|
||||
# The second clause in this helps to handle dialogue that starts with a space
|
||||
# and also allowing single-word dialogue to be handled in a separate elif.
|
||||
quote_open = true
|
||||
parameter_values.append(parameter)
|
||||
elif not quote_open and parameter.begins_with('"'):
|
||||
|
||||
@@ -30,9 +30,13 @@ var _dialog_manager: ESCDialogManager = null
|
||||
var _keytext_regex: RegEx = RegEx.new()
|
||||
|
||||
|
||||
# Constructor
|
||||
func _init() -> void:
|
||||
_keytext_regex.compile(KEYTEXT_REGEX)
|
||||
|
||||
|
||||
# Register the dialog player and load the dialog resources
|
||||
func _ready():
|
||||
_keytext_regex.compile(KEYTEXT_REGEX)
|
||||
if !Engine.is_editor_hint():
|
||||
escoria.dialog_player = self
|
||||
|
||||
@@ -131,12 +135,33 @@ func say(character: String, type: String, text: String) -> void:
|
||||
var _speech_resource = _get_voice_file(
|
||||
matches.get_string("key")
|
||||
)
|
||||
if _speech_resource != "":
|
||||
if _speech_resource == "":
|
||||
escoria.logger.report_warnings(
|
||||
"esc_dialog_player.gd:say",
|
||||
[
|
||||
"Unable to find voice file with key '%s'." % matches.get_string("key")
|
||||
]
|
||||
)
|
||||
else:
|
||||
(
|
||||
escoria.object_manager.get_object(escoria.object_manager.SPEECH).node\
|
||||
as ESCSpeechPlayer
|
||||
).set_state(_speech_resource)
|
||||
text = tr(matches.get_string("key"))
|
||||
|
||||
var translated_text: String = tr(matches.get_string("key"))
|
||||
|
||||
# Only update the text if the translated text was found; otherwise, raise
|
||||
# a warning and use the original, untranslated text.
|
||||
if translated_text == matches.get_string("key"):
|
||||
escoria.logger.report_warnings(
|
||||
"esc_dialog_player.gd:say",
|
||||
[
|
||||
"Unable to find translation key '%s'. Using untranslated text." % matches.get_string("key")
|
||||
]
|
||||
)
|
||||
text = matches.get_string("text")
|
||||
else:
|
||||
text = translated_text
|
||||
else:
|
||||
text = matches.get_string("text")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user