translation improvements

This commit is contained in:
fschade
2026-08-31 13:03:24 +02:00
parent 2a6f2b0e52
commit 520a3dce25
19 changed files with 1457 additions and 55 deletions
+2 -2
View File
@@ -1,3 +1,3 @@
~ start
Albatross: Guten Tag, mein Name ist Albatross. Ich bin eine Künstliche Intelligenz, die entwickelt wurde um dieses Raumschiff zu steuern. Da KI nur verantwortungsvoll genutzt werden kann, wenn Menschen sie verstehen, habe ich den Auftrag Sie zu Ihrer KI-Schulung zu fliegen. Nach der Landung kann ich Sie erst wieder reinlassen und zurück fliegen, wenn Sie genug gelernt haben. Starten wir nun diese Reise! ([Enter/Leertaste/Klicken])
=> END
Albatross: Guten Tag, mein Name ist Albatross. Ich bin eine Künstliche Intelligenz, die entwickelt wurde um dieses Raumschiff zu steuern. Da KI nur verantwortungsvoll genutzt werden kann, wenn Menschen sie verstehen, habe ich den Auftrag Sie zu Ihrer KI-Schulung zu fliegen. Nach der Landung kann ich Sie erst wieder reinlassen und zurück fliegen, wenn Sie genug gelernt haben. Starten wir nun diese Reise! ([Enter/Leertaste/Klicken])
=> END
+33 -13
View File
@@ -1,28 +1,48 @@
extends Node
var voice_id
var _tts_locale := ""
func _ready():
var voices = DisplayServer.tts_get_voices_for_language("de")
if voices.size() > 0:
voice_id = "German+Robosoft6"
else:
voices = DisplayServer.tts_get_voices_for_language("en")
voice_id = voices[0]
# Connect with DialogueManager
_update_voice_for_locale()
DialogueManager.got_dialogue.connect(_on_dialogue)
func _notification(what: int) -> void:
if what == NOTIFICATION_TRANSLATION_CHANGED:
_update_voice_for_locale()
func _update_voice_for_locale() -> void:
var locale := TranslationServer.get_locale()
var lang := locale.substr(0, 2)
if lang == _tts_locale and voice_id != null:
return
_tts_locale = lang
var voices = DisplayServer.tts_get_voices_for_language(lang)
if voices.size() > 0:
# Prefer a known German robotic voice when available; otherwise first matching voice
if lang == "de" and "German+Robosoft6" in voices:
voice_id = "German+Robosoft6"
else:
voice_id = voices[0]
else:
# Fallback to English if current language has no TTS voices
voices = DisplayServer.tts_get_voices_for_language("en")
if voices.size() > 0:
voice_id = voices[0]
else:
voice_id = null
func _on_dialogue(line):
if voice_id == null:
return
# Stop earlier text (important!)
DisplayServer.tts_stop()
# Speak
DisplayServer.tts_speak(line.text, voice_id, 100)
func _stop_dialogue():
DisplayServer.tts_stop()