From b9d45e6be0eb4fbc337c318422bdcd9d60fbd46e Mon Sep 17 00:00:00 2001 From: mistangl Date: Wed, 3 Dec 2025 21:22:26 +0100 Subject: [PATCH] =?UTF-8?q?ein=20paar=20Bigramme=20und=20andere=20Eintr?= =?UTF-8?q?=C3=A4ge=20f=C3=BCr=20Tschechisch=20erg=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/translate.py | 32 ++++++++++++++++++-------------- translation/CSK.cfg | 7 +++++++ 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/lib/translate.py b/lib/translate.py index 6273dce..51cc6fb 100644 --- a/lib/translate.py +++ b/lib/translate.py @@ -156,9 +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: + Bei Einzelwörtern werden auch Satzzeichen und eingebettete Wörter berücksichtigt: - "Weight:" wird zu "Hmotnost:" (Doppelpunkt bleibt erhalten) - "(Sub-distributor)" wird zu "(Rozvaděč)" (Klammern bleiben erhalten) + - "\\fArial Black|b0|i0;Firewall 1" wird zu "\\fArial Black|b0|i0;Požární 1" + (alle Wörter in einem Token werden durchsucht, Trennzeichen bleiben erhalten) Bindestriche im Wort (wie "Sub-distributor") bleiben Teil des Kern-Worts. Args: @@ -194,20 +196,22 @@ def translate_text(text: str, trigramme: dict[str, str], bigramme: dict[str, str translated_words.append(single[word]) has_translation = True else: - # 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) + # Suche ALLE Wörter im Token und ersetze sie (z.B. "Black|b0|i0;Firewall" enthält "Black" und "Firewall") + # Pattern matcht Wörter (Buchstaben, Zahlen, Unterstriche, Bindestriche) + word_found = False + + def replace_word(match): + nonlocal word_found, has_translation + matched_word = match.group(0) + if matched_word in single: + word_found = True has_translation = True - else: - translated_words.append(word) - else: - translated_words.append(word) + return single[matched_word] + return matched_word + + # Ersetze alle gefundenen Wörter im Token + translated_word = re.sub(r'[\w-]+', replace_word, word) + translated_words.append(translated_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 d0acc8d..83cf45e 100644 --- a/translation/CSK.cfg +++ b/translation/CSK.cfg @@ -17,6 +17,7 @@ Rail Bottom Edge=Spodní hrana kolejnice to Inbound empty=do příjmu prázdné to operational area=do provozní oblasti to Storage level=do úložné úrovně +Total power consumption=Celková spotřeba energie [bigramme] @@ -57,9 +58,12 @@ Loading Boom=Nakládací rameno Loading Buff=Nakládací nárazník long x=dlouhý x max capacity=max. kapacita +Maintenance Area=Údržbová oblast +Measurement=Měření Minitrolleys Buffer=Minivozíky Buffer Minitrolleys from=Minivozíky z Minitrolleys to=Minitrolleys to +Mounting plate=Montážní deska MT line=MT line Multi Purpose=Multi Purpose of Trolley=of Trolley @@ -92,7 +96,9 @@ with TEF=with TEF # Format: Begriffe in der dxf=tschechisch # ## deutsch Abhänger=Závěs +BLOCK=BLOK Belastung=Zatížení +Brandschutztor=protipožární vrata Säule=Sloup Schnitt=Řez Unterverteiler=Rozvaděč @@ -157,6 +163,7 @@ Printer=Tiskárna Purpose=Víceúčelový Rail=provozní rail=spodní +Screen=Obrazovka short=stěna Station=Naložený Storage=Skladování