Funktion zur Übersetzung von Einzelbegriffen kommt auch mit BIndestrichen im Wort klar

This commit is contained in:
2025-12-03 21:10:58 +01:00
parent 12cb8fd99c
commit 955bb0a0cc
2 changed files with 21 additions and 1 deletions
+20 -1
View File
@@ -156,6 +156,11 @@ def translate_text(text: str, trigramme: dict[str, str], bigramme: dict[str, str
Übersetzt einen Text durch Ersetzen von Trigrammen, Bigrammen und Einzelwörtern.
Ersetzungen erfolgen in dieser Reihenfolge: Trigramme → Bigramme → Einzelwörter.
Bei Einzelwörtern werden auch Satzzeichen berücksichtigt:
- "Weight:" wird zu "Hmotnost:" (Doppelpunkt bleibt erhalten)
- "(Sub-distributor)" wird zu "(Rozvaděč)" (Klammern bleiben erhalten)
Bindestriche im Wort (wie "Sub-distributor") bleiben Teil des Kern-Worts.
Args:
text: Zu übersetzender Text
trigramme: Dictionary mit Drei-Wort-Phrasen
@@ -185,10 +190,24 @@ def translate_text(text: str, trigramme: dict[str, str], bigramme: dict[str, str
translated_words = []
for word in words:
if word in single:
# Direkter Match
translated_words.append(single[word])
has_translation = True
else:
translated_words.append(word)
# Prüfe ob Wort mit Satzzeichen am Ende existiert (z.B. "Weight:" -> "Weight")
# Trenne Satzzeichen am Anfang und Ende vom Kern-Wort
# Kern-Wort kann Buchstaben, Zahlen, Unterstriche und Bindestriche enthalten
match = re.match(r'^([^\w-]*)([\w-]+)([^\w-]*)$', word)
if match:
prefix, core_word, suffix = match.groups()
if core_word in single:
# Übersetze Kern-Wort und behalte Satzzeichen
translated_words.append(prefix + single[core_word] + suffix)
has_translation = True
else:
translated_words.append(word)
else:
translated_words.append(word)
translated_text = ' '.join(translated_words)
# Gib nur übersetzten Text zurück wenn tatsächlich etwas übersetzt wurde
+1
View File
@@ -161,6 +161,7 @@ short=stěna
Station=Naložený
Storage=Skladování
storage=skladovací
Sub-distributor=Rozvaděč
Sub=Pod
System=systém
to=do