Languages

Languages

/admin/i18n is the language control panel.

Supported locales

CodeLabel
enEnglish
deDeutsch
esEspañol
frFrançais
itItaliano
zh-CN中文

The UI strings are managed by Paraglide JS — translations live in apps/frontend/messages/<locale>.json.

Default locale

The default is what new visitors see and what missing translations fall back to. It must be one of the enabled locales — to change it to a disabled language, enable that language first.

Enabling / disabling

Disable a language to hide it from the public switcher. The translation files stay in place, so re-enabling later is instant. The default language cannot be disabled (change the default first).

CMS translations

Disabling a language also stops the CMS from serving its translated rows — visitors who request that locale via URL or cookie fall back to the default. Existing rows in the markdown_pages table are preserved.

Storage

The config lives in two settings rows:

i18n.default_locale       e.g. "en"
i18n.enabled_locales      JSON array: ["en","de","fr"]
null

Edit them directly in /admin/infra if you need to script changes.