Zum Inhalt

Internationalisierung (i18n)

Rezeptor unterstützt Deutsch und Englisch im Launcher; weitere Sprachen sind modular ergänzbar.

Launcher (GUI)

Pfad Rolle
launcher/locales/de.json Deutsche Strings
launcher/locales/en.json Englische Strings (Fallback)
launcher/locales/manifest.json Liste verfügbarer Locales
launcher/i18n/ t(key), set_locale(), Loader

Fallback-Kette: aktive Locale → en → Key-Name.

Einstellungen: Rezeptor → Einstellungen → Sprache. Beim ersten Start: System-$LANG (de* → de, sonst en).

Neue Sprache hinzufügen

  1. launcher/locales/fr.json anlegen (Keys wie in en.json).
  2. Eintrag in launcher/locales/manifest.json:
    {"id": "fr", "name": "Français"}
    
  3. Rezeptor neu starten — die Sprache erscheint in den Einstellungen.

Keys sind hierarchisch: menu.launch, tab.overview, update.btn_auto, error.E_TRUST_MANIFEST, …

Key-Parity-Check (CI)

make i18n-check    # scripts/check-i18n-parity.py — Teil von make validate

Vergleicht die abgeflachten Key-Sets von launcher/locales/de.json und en.json.
Unterschiedliche Übersetzungen sind ok; fehlende oder nur in einer Sprache vorhandene Keys lassen den Check fehlschlagen.

Aktuell nur der Launcher-JSON-Baum (aktuell ~780+ Keys). Nicht abgedeckt: Rezept-info.*.txt (manuell DE/EN pflegen).

Rezept-Beschreibungen

Pro Rezept unter recipes/<id>/:

  • info.de.txt — Deutsch
  • info.en.txt — Englisch

Der Launcher wählt info.{locale}.txt, dann info.en.txt, dann info.de.txt.

Nach Änderungen: ./scripts/recipe-manifest.sh.

Entwickler-Dokumentation

Doku liegt sprachgetrennt unter docs/:

Ordner Sprache
docs/de/ Deutsch
docs/en/ English

Gleiche Dateinamen in beiden Ordnern (README.md, RECIPE-AUTHORING.md, …).
Links relativ im gleichen Ordner halten — z. B. [RECIPE-AUTHORING.md](RECIPE-AUTHORING.md), nicht ../en/….

MkDocs-Site: Sprachumschalter DE/EN (mkdocs-static-i18n, Ordnerstruktur).

Startseite: index.md

Shell-Skripte

Quelle der Wahrheit: msg::t / msg::_lookup in core/i18n.sh (festes case für DE/EN, gesteuert über RECIPE_UI_LANG).
Es gibt keine externen .lang-Dateien mehr (Legacy-Bäume core/locales/ und scripts/locales/ entfernt).
Launcher-JSON und Shell-msg::t teilen keine Dateien — getrennte Systeme.

Fehlercodes (Launcher)

launcher/log_context.py definiert stabile Codes, z. B.:

Code Bedeutung
E_TRUST_MANIFEST Manifest-Hash stimmt nicht
E_UPDATE_APPLY Auto-Update fehlgeschlagen
E_UPDATE_ROLLBACK Rollback fehlgeschlagen
E_LAUNCH_NO_PROCESS App nach Start nicht aktiv
E_SCRIPT_FAILED Hook-Skript Exit ≠ 0

Anzeige über t("error.<CODE>") + technisches Detail im Vorgang/Log.