Supported Languages
Seelen UI maintains a single, authoritative list of the languages it supports across the app: the Settings language
picker, i18n/translations/ locale files, and the
slu resource translate command all draw from this same list.
Where it's defined
The list lives in Rust at:
libs/core/src/constants/mod.rs
as the SUPPORTED_LANGUAGES constant, an array of SupportedLanguage { label, en_label, value } entries — label is
the language's native name, en_label is its English name, and value is the language code (e.g. es, pt-BR,
zh-CN).
libs/core generates TypeScript bindings for the frontend from this same source, exported as SupportedLanguages in:
libs/core/src/constants/mod.ts
Never hand-edit mod.ts — it is generated. To add, remove, or rename a supported language, edit
SUPPORTED_LANGUAGES in mod.rs and regenerate bindings with cd libs/core && deno task build:rs.
Why this matters for resources
Anything that consumes "which languages does Seelen UI support" — the Settings language dropdown, and the
slu resource translate command described in ResourceText — reads from this list. Adding a language
here automatically:
- Makes it selectable in the Settings language picker (once a matching locale file exists under
i18n/translations/). - Makes
slu resource translatefill it in for everyResourceTextfield in a resource, with no changes needed on the resource author's side.
Because both frontend and CLI derive from the same Rust source, the list never drifts between "languages the UI offers"
and "languages resources get translated into" — check mod.rs directly for the current, exact list rather than keeping
a separate copy of it in documentation.