Languages
The console and docs are available in 8 languages.
The Kisenon console and documentation ship in eight languages. The CLI
(keon) is English-only.
Supported languages
| Tag | Language |
|---|---|
en-US | English (US) |
ja | Japanese (日本語) |
de | German (Deutsch) |
fr | French (Français) |
es | Spanish (Español) |
pt-BR | Portuguese — Brazil (Português) |
ko | Korean (한국어) |
zh-Hans | Chinese — Simplified (简体中文) |
en-US is the default and the source catalog; the rest are
AI-translated. Right-to-left locales are not shipped yet, though the
shell is RTL-ready for the day one is added.
Picking a language in the console
Go to Settings → Language and choose from the dropdown. Each option is labelled with its own endonym (for example, "Japanese (日本語)") so you can always find your way back even from an unfamiliar locale.
Your choice persists per account: the console sends it to the control
plane via PATCH /v1/me with a language field, which stores it on
your user record. The selection takes effect on the next render — no
reload required — and follows you to any browser where you sign in.
Only the eight tags above are accepted; anything else is rejected.
The public site
The landing page and these docs also render in your language — no
sign-in required. Each language has its own URL: English lives at the
bare paths (/docs), and the other languages are prefixed, as in
/ja/docs or /de/docs. Pages you haven't got a translation for fall
back to English rather than disappearing.
Two ways to switch:
- The language selector (globe) in the landing-page header, footer, and docs chrome — pick a language and you stay on the same page under its URL.
- On a first visit, if your browser prefers one of the other seven languages, a one-line suggestion banner offers that language. It never redirects you by itself; dismiss it once and it stays gone.
The resolved locale is remembered in a NEXT_LOCALE cookie, so once
your language is determined it stays consistent across pages and
visits. Signed-in users carry their saved account preference; everyone
else is matched against their browser settings (see below).
How your language is chosen
Detection runs in this order, first match wins:
- An explicit pick. A locale you selected — stored in the
NEXT_LOCALEcookie (and, when signed in, on your account). - Your browser. The
Accept-Languageheader your browser sends, negotiated against the eight supported languages. A request forjamatchesja; a request for plainenmatchesen-USby prefix. - English. If nothing matches, the site falls back to
en-US.
The web and control plane share the same negotiation logic, so a given browser resolves to the same language on both surfaces.
API error messages
Control-plane error responses are localized. When you send an
Accept-Language header, the API resolves the human-readable message
field to your language where a translation exists, falling back to
English otherwise.
The machine-readable code field never changes — it stays stable
regardless of language, so you can match on it programmatically:
{ "error": { "code": "branch_not_ready", "message": "Branch is not yet ready." } }Match on code, not message. The envelope shape is identical in
every language.