From 20dc8fb5ab1bf3f30ad7666b1c768021746da6be Mon Sep 17 00:00:00 2001 From: Junyan Qin Date: Fri, 6 Jun 2025 21:27:08 +0800 Subject: [PATCH] perf: language selecting logic --- web/src/app/login/page.tsx | 35 ++++++++++++++++++++++++----------- web/src/app/register/page.tsx | 35 ++++++++++++++++++++++++++--------- 2 files changed, 50 insertions(+), 20 deletions(-) diff --git a/web/src/app/login/page.tsx b/web/src/app/login/page.tsx index 5f0cf62c..68db5a0a 100644 --- a/web/src/app/login/page.tsx +++ b/web/src/app/login/page.tsx @@ -61,19 +61,32 @@ export default function Login() { }, []); const judgeLanguage = () => { - // here's for user have never set the language - // judge the language by the browser - const language = navigator.language; - if (language) { - let lang = 'zh-Hans'; - if (language === 'zh-CN') { - lang = 'zh-Hans'; - } else { - lang = 'en-US'; - } + if (i18n.language === 'zh-CN' || i18n.language === 'zh-Hans') { + setCurrentLanguage('zh-Hans'); + localStorage.setItem('langbot_language', 'zh-Hans'); + } else { + setCurrentLanguage('en-US'); + localStorage.setItem('langbot_language', 'en-US'); + } + // check if the language is already set + const lang = localStorage.getItem('langbot_language'); + if (lang) { i18n.changeLanguage(lang); setCurrentLanguage(lang); - localStorage.setItem('langbot_language', lang); + return; + } else { + const language = navigator.language; + if (language) { + let lang = 'zh-Hans'; + if (language === 'zh-CN') { + lang = 'zh-Hans'; + } else { + lang = 'en-US'; + } + i18n.changeLanguage(lang); + setCurrentLanguage(lang); + localStorage.setItem('langbot_language', lang); + } } }; diff --git a/web/src/app/register/page.tsx b/web/src/app/register/page.tsx index f5ef84bc..59dfc89d 100644 --- a/web/src/app/register/page.tsx +++ b/web/src/app/register/page.tsx @@ -60,21 +60,38 @@ export default function Register() { }, []); const judgeLanguage = () => { - const language = navigator.language; - if (language) { - let lang = 'zh-Hans'; - if (language === 'zh-CN') { - lang = 'zh-Hans'; - } else { - lang = 'en-US'; - } + if (i18n.language === 'zh-CN' || i18n.language === 'zh-Hans') { + setCurrentLanguage('zh-Hans'); + localStorage.setItem('langbot_language', 'zh-Hans'); + } else { + setCurrentLanguage('en-US'); + localStorage.setItem('langbot_language', 'en-US'); + } + // check if the language is already set + const lang = localStorage.getItem('langbot_language'); + console.log('lang: ', lang); + if (lang) { i18n.changeLanguage(lang); setCurrentLanguage(lang); - localStorage.setItem('langbot_language', lang); + } else { + const language = navigator.language; + if (language) { + let lang = 'zh-Hans'; + if (language === 'zh-CN') { + lang = 'zh-Hans'; + } else { + lang = 'en-US'; + } + console.log('language: ', lang); + i18n.changeLanguage(lang); + setCurrentLanguage(lang); + localStorage.setItem('langbot_language', lang); + } } }; const handleLanguageChange = (value: string) => { + console.log('handleLanguageChange: ', value); i18n.changeLanguage(value); setCurrentLanguage(value); localStorage.setItem('langbot_language', value);