For AI agents: the complete documentation index is available at https://payhon.github.io/AppKernia/en-US/llms.txt, the full documentation bundle is available at https://payhon.github.io/AppKernia/en-US/llms-full.txt, and this page is available as Markdown at https://payhon.github.io/AppKernia/en-US/concepts/internationalization.md.

Internationalization

The first release accepts canonical zh-CN and en-US. The default and final fallback are zh-CN. Aliases such as zh, zh-Hans, zh_CN, and en are normalized first.

For signed-in users:

All locale aliases normalize to `zh-CN` or `en-US`, and the UI changes only after the complete catalog loads. A failure keeps the previous locale instead of producing a partially translated screen.

Every request sends Accept-Language; the server returns Content-Language and adds Vary: Accept-Language to language-dependent cacheable responses.

  • Business logic uses stable error codes, never translated display messages.
  • Time stays RFC 3339 UTC and money stays an integer in the smallest currency unit.
  • Admin synchronizes i18next, Ant Design, Day.js, HTML lang, and titles.
  • Mobile synchronizes AkI18n, navigation titles, TabBar, AK UI, and later requests.
  • Both catalogs must have identical keys and placeholder sets.

Dynamic menus use stable i18n_key values, while business errors use stable error.code and message_key. A localized server message is a display fallback, never a client-side decision key.