diff --git a/src/i18n/languageDetector.ts b/src/i18n/languageDetector.ts index e3e9422e..23594830 100644 --- a/src/i18n/languageDetector.ts +++ b/src/i18n/languageDetector.ts @@ -3,30 +3,36 @@ import { LanguageDetectorAsyncModule } from 'i18next'; import { mmkvStorage } from '../services/mmkvStorage'; const languageDetector: LanguageDetectorAsyncModule = { - type: 'languageDetector', - async: true, - detect: (callback: (lng: string | undefined) => void): void => { - const findLanguage = async () => { - try { - const savedLanguage = await mmkvStorage.getItem('user_language'); - if (savedLanguage) { - callback(savedLanguage); - return; - } - } catch (error) { - console.log('Error reading language from storage', error); - } + type: "languageDetector", + async: true, + detect: (callback: (lng: string | undefined) => void): void => { + const findLanguage = async () => { + try { + const savedLanguage = await mmkvStorage.getItem("user_language"); + if (savedLanguage) { + callback(savedLanguage); + return; + } - const locales = getLocales(); - const languageCode = locales[0]?.languageCode ?? 'en'; - callback(languageCode); - }; - findLanguage(); - }, - init: () => { }, - cacheUserLanguage: (language: string) => { - mmkvStorage.setItem('user_language', language); - }, + const locales = getLocales(); + if (!locales || locales.length === 0) { + callback("en"); + return; + } + + const bestTag = locales[0].languageTag; + callback(bestTag); + } catch (error) { + console.error("[LangDetector(TEST)] Failed to detect language:", error); + callback("en"); + } + }; + findLanguage(); + }, + init: () => {}, + cacheUserLanguage: (language: string) => { + mmkvStorage.setItem("user_language", language); + }, }; -export default languageDetector; +export default languageDetector; \ No newline at end of file