Merge pull request #588 from saimuelbr/improve-language-detector

fix(i18n): use languageTag to detect region and select the correct language
This commit is contained in:
Nayif 2026-03-09 05:18:46 +05:30 committed by GitHub
commit 911730770b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3,29 +3,35 @@ import { LanguageDetectorAsyncModule } from 'i18next';
import { mmkvStorage } from '../services/mmkvStorage'; import { mmkvStorage } from '../services/mmkvStorage';
const languageDetector: LanguageDetectorAsyncModule = { const languageDetector: LanguageDetectorAsyncModule = {
type: 'languageDetector', type: "languageDetector",
async: true, async: true,
detect: (callback: (lng: string | undefined) => void): void => { detect: (callback: (lng: string | undefined) => void): void => {
const findLanguage = async () => { const findLanguage = async () => {
try { try {
const savedLanguage = await mmkvStorage.getItem('user_language'); const savedLanguage = await mmkvStorage.getItem("user_language");
if (savedLanguage) { if (savedLanguage) {
callback(savedLanguage); callback(savedLanguage);
return; return;
} }
} catch (error) {
console.log('Error reading language from storage', error);
}
const locales = getLocales(); const locales = getLocales();
const languageCode = locales[0]?.languageCode ?? 'en'; if (!locales || locales.length === 0) {
callback(languageCode); callback("en");
return;
}
const bestTag = locales[0].languageTag;
callback(bestTag);
} catch (error) {
console.error("[LangDetector(TEST)] Failed to detect language:", error);
callback("en");
}
}; };
findLanguage(); findLanguage();
}, },
init: () => { }, init: () => {},
cacheUserLanguage: (language: string) => { cacheUserLanguage: (language: string) => {
mmkvStorage.setItem('user_language', language); mmkvStorage.setItem("user_language", language);
}, },
}; };