NuvioStreaming/src/i18n/languageDetector.ts

38 lines
No EOL
1.1 KiB
TypeScript

import { getLocales } from 'expo-localization';
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;
}
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;