- Shipped
- September 5, 2026 at 7:44 PM UTC
- Author
- Kamo
- Commit
- 0e901e1
The application is the one surface on this platform whose reader has never signed in to anything and may not read English. It now offers the same twenty-two languages the marketing site does, each named in its own — somebody looking for Korean is looking for 한국어, not for the word "Korean" spelled in an alphabet they may not read. **The locale is a COOKIE, not a URL segment.** The application address is a white-label link a lender prints on a card, puts in an advert and pastes into an email. A `/es/` prefix would change every one of those, invalidate the links already copied out of the settings screen, and make the canonical address depend on who happened to open it. The marketing site prefixes because its pages are indexed per language; nothing here is indexed at all. First visit falls back to `Accept-Language`, so a Spanish reader is spoken to before they find the menu. **The "Preferred language" select is gone.** Asking twice invited two answers — somebody reading the form in Korean would still have been filed as English unless they noticed a second control halfway down step one. The lead's language is now the language they are reading in, which is a better signal anyway: what they did rather than what they said. `lib/language.ts` maps all twenty-two onto the shared library's `LanguageType`. Values that reach the CRM stay English on purpose — `Morning`, `Conventional`, the credit bands. A loan officer reads those in the lead, in their own language, not the borrower's. Only the labels are translated. `kamo-apps` is its own project in kamo-translation-dictionary, beside kamo-marketing and sharing nothing with it; CI clones and copies only that directory, and `messages/` is gitignored here for the same reason it is in every sibling — one copy of the catalogue, in the dictionary. The chat bubble is the marketing site's embed, behaviour unchanged: it waits for a sign that somebody is actually here rather than spending 142 KB during the load of a form they are trying to fill in. Verified: switching sets the cookie, `<html lang>` follows, `dir` flips for Arabic, no console errors, and axe clean at WCAG 2.1 AA on all four pages.