From 955bb0a0cccd3ff86b887ad27ada328449d3c095 Mon Sep 17 00:00:00 2001 From: mistangl Date: Wed, 3 Dec 2025 21:10:58 +0100 Subject: [PATCH] =?UTF-8?q?Funktion=20zur=20=C3=9Cbersetzung=20von=20Einze?= =?UTF-8?q?lbegriffen=20kommt=20auch=20mit=20BIndestrichen=20im=20Wort=20k?= =?UTF-8?q?lar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/translate.py | 21 ++++++++++++++++++++- translation/CSK.cfg | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) 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