diff --git a/lib/translate.py b/lib/translate.py index f06cbdc..6273dce 100644 --- a/lib/translate.py +++ b/lib/translate.py @@ -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 diff --git a/translation/CSK.cfg b/translation/CSK.cfg index 3b5cbb7..d0acc8d 100644 --- a/translation/CSK.cfg +++ b/translation/CSK.cfg @@ -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