ein paar Bigramme und andere Einträge für Tschechisch ergänzt
This commit is contained in:
+18
-14
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user