standardisiert: multilang und einefach Sprache enthalten beide translations und untranslated. Doku um das neue Feature ergänzt

This commit is contained in:
2025-12-15 14:32:23 +01:00
parent 60ba962faa
commit 5939879e23
2 changed files with 126 additions and 12 deletions
+12 -11
View File
@@ -663,7 +663,7 @@ def load_translations_from_json(filename: Path, target_lang: str = None) -> dict
Liest Übersetzungen aus einer JSON-Datei.
Unterstützt beide Strukturen:
- Alte Struktur: "translations": [{"source": "...", "target": "..."}, ...]
- Hierarchische Struktur: "[LANG]": {"translated": [...], ...}
- Hierarchische Struktur: "[LANG]": {"translations": [...], ...}
Bei hierarchischer Struktur werden Übersetzungen aus allen Sprachen oder nur der angegebenen Sprache gelesen.
Wenn mehrere Übersetzungen für denselben source existieren, wird die letzte verwendet (Sprache mit höherer Priorität).
@@ -732,14 +732,15 @@ def load_translations_from_json(filename: Path, target_lang: str = None) -> dict
print(f"WARNUNG: [{lang}] Block ist kein Object, überspringe")
continue
# Lese aus translated Block
if 'translated' in lang_data:
translated = lang_data['translated']
if not isinstance(translated, list):
print(f"WARNUNG: [{lang}][translated] ist kein Array, überspringe")
# Lese aus translations Block (oder translated für Rückwärtskompatibilität)
translations_key = 'translations' if 'translations' in lang_data else 'translated'
if translations_key in lang_data:
translations_list = lang_data[translations_key]
if not isinstance(translations_list, list):
print(f"WARNUNG: [{lang}][{translations_key}] ist kein Array, überspringe")
continue
for idx, entry in enumerate(translated):
for idx, entry in enumerate(translations_list):
if not isinstance(entry, dict):
continue
@@ -1106,8 +1107,8 @@ def write_texts_to_json(texts: list[str], ignored_texts: list[str], output_path:
- "ignored": Liste von Strings für gefilterte/ignorierte Texte
Bei mehreren Sprachen (hierarchische Struktur):
- "[EN]": {"translated": [...], "untranslated": [...]}
- "[FR]": {"translated": [...], "untranslated": [...]}
- "[EN]": {"translations": [...], "untranslated": [...]}
- "[FR]": {"translations": [...], "untranslated": [...]}
- "ignored": Liste von Strings für gefilterte/ignorierte Texte
Args:
@@ -1145,7 +1146,7 @@ def write_texts_to_json(texts: list[str], ignored_texts: list[str], output_path:
# Hierarchische Struktur: [LANG] als Schlüssel
output_data[f"[{lang}]"] = {
"translated": translations,
"translations": translations,
"untranslated": untranslated
}
@@ -1196,7 +1197,7 @@ def write_texts_to_json(texts: list[str], ignored_texts: list[str], output_path:
for lang in translation_languages:
if f"[{lang}]" in output_data:
lang_data = output_data[f"[{lang}]"]
print(f" [{lang}] Übersetzungen: {len(lang_data['translated'])}, Nicht übersetzt: {len(lang_data['untranslated'])}")
print(f" [{lang}] Übersetzungen: {len(lang_data['translations'])}, Nicht übersetzt: {len(lang_data['untranslated'])}")
else:
# Alte Struktur
if translation_dicts: