Rawconfig Parser verwendet, damit die Sektion [trans] keine Probleme mehr bereitet, weil Zuordnungen fehlen.

This commit is contained in:
2026-02-17 14:38:13 +01:00
parent 554f1f3c1f
commit a3a37003b6
+21 -26
View File
@@ -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)