45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
import i18next from "i18next";
|
|
import { initReactI18next } from "react-i18next";
|
|
import * as Localization from "expo-localization";
|
|
import { Platform } from "react-native";
|
|
import { en } from "./languages/en";
|
|
import { de } from "./languages/de";
|
|
import { fr } from "./languages/fr";
|
|
import { km } from "./languages/km";
|
|
import { zh } from "./languages/zh";
|
|
import { ar } from "./languages/ar";
|
|
import AsyncStorage from "@react-native-async-storage/async-storage";
|
|
export const languageResources = {
|
|
en: { translation: en },
|
|
zh: { translation: zh },
|
|
de: { translation: de },
|
|
fr: { translation: fr },
|
|
km: { translation: km },
|
|
ar: { translation: ar },
|
|
};
|
|
|
|
const i18n = i18next.createInstance();
|
|
|
|
// Configure i18next instance
|
|
i18n
|
|
.use(initReactI18next) // Ensure initReactI18next is used
|
|
.init({
|
|
compatibilityJSON: "v3",
|
|
lng: "en", // Default language
|
|
fallbackLng: "en",
|
|
resources: languageResources,
|
|
});
|
|
|
|
// Fetch stored language and set i18next instance accordingly
|
|
const getStoredLanguage = async () => {
|
|
const lng = await AsyncStorage.getItem("enatega-language");
|
|
i18n.changeLanguage(lng || "en"); // Change language
|
|
};
|
|
|
|
// Execute language initialization based on platform
|
|
if (Platform.OS === "android" || Platform.OS === "ios") {
|
|
getStoredLanguage();
|
|
}
|
|
|
|
export default i18n;
|