diff --git a/public/js/i18n-simple.js b/public/js/i18n-simple.js index 18d0c7e4..b725a8be 100644 --- a/public/js/i18n-simple.js +++ b/public/js/i18n-simple.js @@ -25,19 +25,27 @@ const I18n = { }, detectLanguage() { - // Check localStorage first + // Priority order: + // 1. User's manual selection (localStorage) - allows override via flag clicks + // 2. Browser's language setting (automatic detection) + // 3. Default to English (fallback) + + // 1. Check localStorage first (user override) const saved = localStorage.getItem('tractatus-lang'); if (saved && this.supportedLanguages.includes(saved)) { + console.log(`[i18n] Language detected from user preference: ${saved}`); return saved; } - - // Check browser language + + // 2. Check browser language (automatic detection) const browserLang = (navigator.language || navigator.userLanguage).split('-')[0]; if (this.supportedLanguages.includes(browserLang)) { + console.log(`[i18n] Language detected from browser: ${browserLang} (from ${navigator.language})`); return browserLang; } - - // Default to English + + // 3. Default to English + console.log(`[i18n] Language defaulted to: en (browser language '${navigator.language}' not supported)`); return 'en'; }, @@ -160,22 +168,23 @@ const I18n = { console.error(`[i18n] Unsupported language: ${lang}`); return; } - - // Save preference + + // Save preference (overrides browser language detection) localStorage.setItem('tractatus-lang', lang); - + console.log(`[i18n] User manually selected language: ${lang} (saved to localStorage)`); + // Update current language this.currentLang = lang; - + // Reload translations await this.loadTranslations(lang); - + // Reapply to page this.applyTranslations(); - + // Update selector this.updateLanguageSelector(); - + // Update HTML lang attribute document.documentElement.lang = lang; @@ -184,7 +193,7 @@ const I18n = { detail: { language: lang } })); - console.log(`[i18n] Language changed to: ${lang}`); + console.log(`[i18n] Language changed to: ${lang} (will persist across pages)`); }, updateLanguageSelector() {