Mehrsprachigkeit
Ab Werk versteht der PDNS Manager sechs Sprachen: Deutsch, Englisch, Serbisch, Kroatisch, Bosnisch und Ungarisch. Jede dieser Sprachen hat aktuell 770 Übersetzungs-Keys – Stand v2.3.7 ist das Set in allen Sprachen vollständig synchronisiert.
Sprache wechseln
Im Header gibt es ein Sprach-Dropdown mit Flaggen-Emojis. Die Auswahl wird im Browser persistiert (localStorage), funktioniert also auch ohne Login.
Default-Sprache setzen
In der .env:
DEFAULT_LANGUAGE=de Das wirkt für jeden Besucher, der noch keine eigene Wahl getroffen hat (z. B. inkognito oder neuer Browser).
Fallback-Verhalten
Wenn ein Übersetzungs-Key in der gewählten Sprache fehlt, greift die UI auf Englisch zurück. Das passiert automatisch und transparent – du bekommst nirgendwo einen leeren String oder ein null.
In der Praxis tritt das fast nie auf, weil das Sync-Skript (siehe unten) dafür sorgt, dass alle Sprachen die gleichen Keys haben. Aber als Sicherheitsnetz für PRs ist es eingebaut.
Neue Sprache beisteuern
frontend/src/locales/en.jsonals Vorlage kopieren, z. B. nachit.json.- Werte übersetzen, Keys nicht anfassen.
- In
frontend/src/i18n.jseinen Eintrag inLANGUAGES(Code, Label, Flag-Emoji) und imresources-Block ergänzen. - Pull Request aufmachen.
Übersetzungen pflegen (Maintainer)
frontend/src/locales/en.json ist die Source of Truth. Wenn du in einem PR neue Keys einbaust, vor dem Commit:
node scripts/sync-locales.mjs Was das Skript macht:
- Ergänzt fehlende Keys in allen anderen Sprachen mit dem englischen Wert (Fallback).
- Entfernt Keys, die nicht mehr in
en.jsonexistieren. - Listet pro Datei auf, was hinzugefügt/entfernt wurde.
- Lässt bestehende Übersetzungen unangetastet.
Wo wird übersetzt, wo nicht
- Übersetzt: alle UI-Strings (Buttons, Labels, Hilfetexte, Fehlermeldungen, Mail-Templates).
- Nicht übersetzt: technische Bezeichner wie Record-Typen (
A,AAAA, …) – das sind RFC-Begriffe und sollen sprachneutral bleiben.