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,30 +3,36 @@ 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;
findLanguage(); }
},
init: () => { }, const bestTag = locales[0].languageTag;
cacheUserLanguage: (language: string) => { callback(bestTag);
mmkvStorage.setItem('user_language', language); } 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;