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';
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;