diff --git a/package.json b/package.json index 74af6ae..07c964c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pezkuwi-telegram-miniapp", - "version": "1.0.222", + "version": "1.0.224", "type": "module", "description": "Pezkuwichain Telegram Mini App - Forum, Announcements, Rewards", "author": "Pezkuwichain Team", diff --git a/src/i18n/index.tsx b/src/i18n/index.tsx index a7cc3a3..9831803 100644 --- a/src/i18n/index.tsx +++ b/src/i18n/index.tsx @@ -68,26 +68,32 @@ const TG_LANG_MAP: Record = { }; /** - * Detect language: localStorage first, then URL path (bot link), then Telegram user language, then default. - * URL path is consumed once and persisted to localStorage, then cleaned from the URL + * Detect language priority: + * 1. URL path (bot sends /tr, /ar — always wins, user just clicked a language button) + * 2. localStorage (persisted preference from previous session) + * 3. Telegram WebApp user language (fallback) + * 4. Default (krd) + * + * URL path is consumed once, persisted to localStorage, then cleaned from the URL * to prevent Telegram WebView cache issues with #tgWebAppData hash. */ function detectLanguage(): LanguageCode { - // 1. Check localStorage (persisted user preference) - const stored = localStorage.getItem('app_language'); - if (stored && VALID_LANGS.includes(stored as LanguageCode)) { - return stored as LanguageCode; - } - - // 2. Check URL path (bot sends /tr, /ar, /en etc.) + // 1. Check URL path FIRST (bot sends /tr, /ar, /en etc.) + // This takes priority over localStorage because it represents the user's + // active language choice from the bot keyboard. const firstSegment = window.location.pathname.split('/').filter(Boolean)[0]; if (firstSegment && VALID_LANGS.includes(firstSegment as LanguageCode)) { - // Persist to localStorage and clean URL path to avoid WebView cache issues localStorage.setItem('app_language', firstSegment); window.history.replaceState(null, '', '/' + window.location.search + window.location.hash); return firstSegment as LanguageCode; } + // 2. Check localStorage (persisted user preference from previous session) + const stored = localStorage.getItem('app_language'); + if (stored && VALID_LANGS.includes(stored as LanguageCode)) { + return stored as LanguageCode; + } + // 3. Check Telegram WebApp user language try { const tg = ( diff --git a/src/version.json b/src/version.json index d5ead53..d548929 100644 --- a/src/version.json +++ b/src/version.json @@ -1,5 +1,5 @@ { - "version": "1.0.222", - "buildTime": "2026-02-25T16:16:47.708Z", - "buildNumber": 1772036207713 + "version": "1.0.224", + "buildTime": "2026-02-25T16:46:10.349Z", + "buildNumber": 1772037970349 }