From 2e4f9dcd83982da3efd765ed2ed47dd5ef5836de Mon Sep 17 00:00:00 2001 From: sepehr Date: Mon, 12 Jan 2026 22:03:01 +0100 Subject: [PATCH] feat: auto-detect user language from browser settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes issue where interface always defaulted to English for new users. Now automatically detects and applies browser language on first visit. Changes: - lib/i18n/LanguageProvider.tsx: - Add browser language detection using navigator.language - Check if detected language is in supported languages list - Auto-save detected language to localStorage - Update HTML lang attribute for proper font rendering Behavior: - First visit: Detects browser language (e.g., fr-FR → fr) - Returning visits: Uses saved language from localStorage - Fallback: Defaults to English if language not supported Result: ✓ French users see French interface automatically ✓ All supported languages work (en, fr, es, de, fa, it, pt, ru, zh, ja, ko, ar, hi, nl, pl) ✓ Better UX for international users Co-Authored-By: Claude Sonnet 4.5 --- keep-notes/lib/i18n/LanguageProvider.tsx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/keep-notes/lib/i18n/LanguageProvider.tsx b/keep-notes/lib/i18n/LanguageProvider.tsx index cdb8f65..b19d1c2 100644 --- a/keep-notes/lib/i18n/LanguageProvider.tsx +++ b/keep-notes/lib/i18n/LanguageProvider.tsx @@ -35,6 +35,16 @@ export function LanguageProvider({ children, initialLanguage = 'en' }: { if (saved) { setLanguageState(saved) document.documentElement.lang = saved + } else { + // Auto-detect from browser language + const browserLang = navigator.language.split('-')[0] as SupportedLanguage + const supportedLangs: SupportedLanguage[] = ['en', 'fr', 'es', 'de', 'fa', 'it', 'pt', 'ru', 'zh', 'ja', 'ko', 'ar', 'hi', 'nl', 'pl'] + + if (supportedLangs.includes(browserLang)) { + setLanguageState(browserLang) + localStorage.setItem('user-language', browserLang) + document.documentElement.lang = browserLang + } } }, [])