- Shipped
- April 28, 2026 at 3:28 PM UTC
- Author
- kamo
- Commit
- 384eff4
Adds next-intl-based internationalization across kamo-internal without URL locale prefixes. Active locale is read from the kamo-locale cookie, which mirrors the authenticated member's `language` preference (set via the Regional Settings card in **************** Infrastructure: - i18n/locales.ts, i18n/request.ts: 22 supported locales matching kamo-marketing - /api/i18n/set-locale: writes the kamo-locale cookie - LocaleBootstrap: syncs cookie to Member.language on first authenticated load - I18nProviders: applies MUI core, x-data-grid, x-date-pickers locales and date-fns adapter locale to the active language - useFormatters: locale-aware date / number / percent / relative-time helpers - MyAccountTab Regional Settings save: writes the cookie + router.refresh() when the user changes their own language - scripts/translate.ts: build-time delta translation against TranslateService (mirrors kamo-marketing's pattern) - scripts/merge-fragments.ts, **************** tooling for aggregating per-area key fragments into messages/en.json Coverage: - messages/en.json seeded with shared common.*, nav.*, auth.* keys plus initial extraction across ~67 pages and components (dashboard, leads, commerce, settings, account, contacts, settings/features, settings/member, components/settings, components/tools/ai-chat, etc.). Many feature surfaces still need follow-up extraction passes.