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).
Responses
Section titled “ Responses ”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
object
object
Example
{ "en": { "nav.collections": "Libraries" }}