From a3a37003b65911a66b85835da6c9551232724049 Mon Sep 17 00:00:00 2001 From: mistangl Date: Tue, 17 Feb 2026 14:38:13 +0100 Subject: [PATCH] Rawconfig Parser verwendet, damit die Sektion [trans] keine Probleme mehr bereitet, weil Zuordnungen fehlen. --- lib/translate.py | 47 +++++++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/lib/translate.py b/lib/translate.py index cf04ef1..60ec229 100644 --- a/lib/translate.py +++ b/lib/translate.py @@ -277,8 +277,9 @@ def load_translation_config(translation_lang: str, translation_dir: Path) -> tup # Prüfe auf führende Leerzeichen vor dem Parsen (würden Zeilen zusammenziehen) _check_leading_spaces(config_file, translation_lang) - # RawConfigParser mit case-sensitive Keys - config = RawConfigParser() + # RawConfigParser mit case-sensitive Keys und Unterstützung für Einträge ohne Wert + # (allow_no_value=True damit der [transfer]-Abschnitt mit einzelnen Begriffen ohne '=' gelesen werden kann) + config = RawConfigParser(allow_no_value=True) # Überschreibe optionxform um Groß-/Kleinschreibung zu erhalten config.optionxform = str try: @@ -292,37 +293,31 @@ def load_translation_config(translation_lang: str, translation_dir: Path) -> tup bigramme = {} single = {} - # Lade Multi (4+ Wörter) - if config.has_section('multi'): - for key in config['multi']: - original = key - translation = config['multi'][key] + def _load_section(section_name: str) -> dict[str, str]: + """Lädt eine Übersetzungssektion und warnt bei Einträgen ohne '=' (value=None).""" + result = {} + if not config.has_section(section_name): + return result + for key in config[section_name]: + translation = config[section_name][key] + if translation is None: + print(f" WARNUNG [{translation_lang}] [{section_name}]: Eintrag ohne '=' ignoriert: '{key}'") + continue if translation and not translation.startswith('#'): - multi[original] = translation + result[key] = translation + return result + + # Lade Multi (4+ Wörter) + multi = _load_section('multi') # Lade Trigramme - if config.has_section('trigramme'): - for key in config['trigramme']: - original = key - translation = config['trigramme'][key] - if translation and not translation.startswith('#'): - trigramme[original] = translation + trigramme = _load_section('trigramme') # Lade Bigramme - if config.has_section('bigramme'): - for key in config['bigramme']: - original = key - translation = config['bigramme'][key] - if translation and not translation.startswith('#'): - bigramme[original] = translation + bigramme = _load_section('bigramme') # Lade Single - if config.has_section('single'): - for key in config['single']: - original = key - translation = config['single'][key] - if translation and not translation.startswith('#'): - single[original] = translation + single = _load_section('single') # Prüfe Selbstübersetzungen in jedem Block und entferne sie mit Warnung multi = _filter_self_translations('multi', multi)