Skip to content

Operator overrides of shipped UI strings

GET
/site-text

Every override the operator has written, as language → i18n key → replacement string (#794, ADR 0081 §1). The frontend fetches this once at boot and resolves each override over its bundled catalogue at render time.

ANONYMOUS-READABLE, deliberately. This is the wording of the UI itself — the navbar a logged-out visitor reads is the same navbar everyone else reads, and gating it would mean the operator’s copy only appeared after sign-in. There is nothing here a caller could not already read off the rendered page.

Every language is returned in one response rather than behind a ?language= filter: the map is small (operators override a handful of strings), it is cached as a single entry, and the client switches locale at runtime — a filtered read would force a refetch on every locale change.

Values are PLAIN TEXT. They flow through the client’s {var} interpolation and are never rendered as HTML (ADR 0085 keeps rich text the only HTML surface).

The override map. Empty object when nothing is overridden.

Operator overrides of shipped UI strings (#794), nested language → i18n key → replacement.

Language first because that is the axis every consumer selects on: a client resolves its active locale once and then does key lookups inside it. A language with no overrides is simply absent — there are no empty sub-objects to skip.

object
overrides
required
object
key
additional properties
object
key
additional properties
string
Example
{
"en": {
"nav.collections": "Libraries"
}
}