Funktion zur Übersetzung von Einzelbegriffen kommt auch mit BIndestrichen im Wort klar
This commit is contained in:
+20
-1
@@ -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.
|
Übersetzt einen Text durch Ersetzen von Trigrammen, Bigrammen und Einzelwörtern.
|
||||||
Ersetzungen erfolgen in dieser Reihenfolge: Trigramme → Bigramme → Einzelwörter.
|
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:
|
Args:
|
||||||
text: Zu übersetzender Text
|
text: Zu übersetzender Text
|
||||||
trigramme: Dictionary mit Drei-Wort-Phrasen
|
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 = []
|
translated_words = []
|
||||||
for word in words:
|
for word in words:
|
||||||
if word in single:
|
if word in single:
|
||||||
|
# Direkter Match
|
||||||
translated_words.append(single[word])
|
translated_words.append(single[word])
|
||||||
has_translation = True
|
has_translation = True
|
||||||
else:
|
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)
|
translated_text = ' '.join(translated_words)
|
||||||
|
|
||||||
# Gib nur übersetzten Text zurück wenn tatsächlich etwas übersetzt wurde
|
# Gib nur übersetzten Text zurück wenn tatsächlich etwas übersetzt wurde
|
||||||
|
|||||||
@@ -161,6 +161,7 @@ short=stěna
|
|||||||
Station=Naložený
|
Station=Naložený
|
||||||
Storage=Skladování
|
Storage=Skladování
|
||||||
storage=skladovací
|
storage=skladovací
|
||||||
|
Sub-distributor=Rozvaděč
|
||||||
Sub=Pod
|
Sub=Pod
|
||||||
System=systém
|
System=systém
|
||||||
to=do
|
to=do
|
||||||
|
|||||||
Reference in New Issue
Block a user