Skip to content

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

Open
zqleslie wants to merge 1 commit into
davz7:mainfrom
zqleslie:feat/i18n-lang-detect-29-rebase
Open

feat(i18n): auto-detect browser language with localStorage persistence (closes #29)#50
zqleslie wants to merge 1 commit into
davz7:mainfrom
zqleslie:feat/i18n-lang-detect-29-rebase

Conversation

@zqleslie
Copy link
Copy Markdown

Summary (Rebased on latest main)

Rebased PR of #40 onto current main to resolve merge conflicts.

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.

Replaces #40 (rebased to resolve merge conflicts with main).

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