PDNS Manager

Languages

Out of the box PDNS Manager speaks six languages: German, English, Serbian, Croatian, Bosnian and Hungarian. Each currently has 770 translation keys – as of v2.3.7 the set is fully synced across all languages.

Switching languages

The header has a language dropdown with flag emojis. Selection is persisted in localStorage, so it works without a login.

Set the default language

In .env:

DEFAULT_LANGUAGE=en

Effective for any visitor who hasn't picked one yet (e.g. incognito or a fresh browser).

Fallback

If a key is missing in the chosen language, the UI falls back to English. Automatic and transparent – you never get an empty string.

In practice that almost never happens because the sync script (below) keeps all languages on the same key set. But it's a safety net for PRs.

Contribute a new language

  1. Copy frontend/src/locales/en.json, e.g. to it.json.
  2. Translate values, leave keys alone.
  3. In frontend/src/i18n.js add an entry to LANGUAGES (code, label, flag emoji) and the resources block.
  4. Open a pull request.

Maintaining translations

frontend/src/locales/en.json is the source of truth. When you add new keys in a PR, before commit:

node scripts/sync-locales.mjs

The script:

  • Adds missing keys to all other languages with the English value (fallback).
  • Removes keys no longer in en.json.
  • Reports per file what was added/removed.
  • Leaves existing translations alone.

What's translated, what isn't

  • Translated: all UI strings (buttons, labels, hints, errors, mail templates).
  • Not translated: technical identifiers like record types (A, AAAA, …) – RFC terms stay language-neutral.