Part of the frontend internationalization effort (see Epic). Stand up the i18n foundation so all later string extraction has somewhere to go. ### Tasks - [ ] Add deps: `react-i18next`, `i18next`, `i18next-browser-languagedetector` - [ ] Create `src/frontend/src/i18n/index.ts` (i18next init for the renderer) - [ ] Create locale folders/namespaces: `src/frontend/src/i18n/locales/{en,es,fr,ja}/{common,settings,dashboard,onboarding,activity,mappings,about}.json` - [ ] Wrap `<AppShell />` in `index.js` (I18nextProvider or side-effect import) - [ ] Default language from `navigator.language`, fallback to `en` ### Locales `en` (base) · `es` · `fr` · `ja`. Non-English files start as drafts to be refined by native speakers. No visible UI change expected from this issue alone.
Part of the frontend internationalization effort (see Epic).
Stand up the i18n foundation so all later string extraction has somewhere to go.
Tasks
react-i18next,i18next,i18next-browser-languagedetectorsrc/frontend/src/i18n/index.ts(i18next init for the renderer)src/frontend/src/i18n/locales/{en,es,fr,ja}/{common,settings,dashboard,onboarding,activity,mappings,about}.json<AppShell />inindex.js(I18nextProvider or side-effect import)navigator.language, fallback toenLocales
en(base) ·es·fr·ja. Non-English files start as drafts to be refined by native speakers.No visible UI change expected from this issue alone.