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í