Skip to content

feat(i18n): auto-detect browser language with localStorage persistence (closes #29)#40

Open
zqleslie wants to merge 3 commits into
davz7:mainfrom
zqleslie:feat/i18n-lang-detect-29
Open

feat(i18n): auto-detect browser language with localStorage persistence (closes #29)#40
zqleslie wants to merge 3 commits into
davz7:mainfrom
zqleslie:feat/i18n-lang-detect-29

Conversation

@zqleslie
Copy link
Copy Markdown

Summary

Auto-detects the user's browser language on init and persists manual language toggles in localStorage, so the app remembers the user's preference across sessions.

Changes

1. CreditRoot/src/i18n/index.js

  • Added i18next-browser-languagedetector via .use(LanguageDetector)
  • Removed hardcoded lng: 'es'
  • Configured detection:
    • order: ['localStorage', 'navigator'] — reads localStorage.getItem('ms-lang') first, falls back to navigator.language
    • lookupLocalStorage: 'ms-lang'
    • convertDetectedLanguage — if browser language starts with en, use en; otherwise default to es
  • fallbackLng stays es

2. CreditRoot/package.json

  • Added "i18next-browser-languagedetector": "^8.2.1" to dependencies

3. CreditRoot/src/components/layout/AppHeader.jsx

  • Updated toggleLang() to persist user choice: localStorage.setItem('ms-lang', next)

Acceptance Criteria (Issue #29)

  • On init, read localStorage.getItem('ms-lang') first
  • If absent, parse navigator.language — if starts with en, use en; else default es
  • When user toggles language in navbar, write to localStorage.setItem('ms-lang', lang)
  • fallbackLng stays es
  • Added i18next-browser-languagedetector to dependencies

Closes #29.

zqleslie added 3 commits May 26, 2026 22:22
closes davz7#29)

- On init, read localStorage.getItem('ms-lang') first
- If absent, parse navigator.language — if starts with 'en', use 'en'; otherwise default to 'es'
- fallbackLng stays as 'es'
closes davz7#29)

- Add i18next-browser-languagedetector to dependencies
- Configure detection: localStorage ('ms-lang') → navigator.language → fallback 'es'
- Navigator language: starts with 'en' → 'en', else → 'es'
- Persist user choice on language toggle in AppHeader
- Remove hardcoded lng: 'es'
- fallbackLng remains 'es'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Issue #4 — Auto-detect browser language and persist preference

1 participant