import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; import * as Localization from 'expo-localization'; import AsyncStorage from '@react-native-async-storage/async-storage'; import enTranslation from '../locales/en/translation.json'; import zhTranslation from '../locales/zh/translation.json'; import frTranslation from '../locales/fr/translation.json'; // 本地存储的语言键 const LANGUAGE_KEY = '@app_language'; // 获取设备语言 const deviceLanguage = Localization.locale.split('-')[0]; // 初始化 i18n i18n .use(initReactI18next) .init({ resources: { en: { translation: enTranslation }, zh: { translation: zhTranslation }, fr: { translation: frTranslation } }, lng: deviceLanguage, // 使用设备语言 fallbackLng: 'en', // 如果找不到翻译,使用英语 interpolation: { escapeValue: false // 不需要转义 HTML }, compatibilityJSON: 'v4' // 兼容 React Native }); // 从本地存储加载语言设置 const loadLanguage = async () => { try { const savedLanguage = await AsyncStorage.getItem(LANGUAGE_KEY); if (savedLanguage) { i18n.changeLanguage(savedLanguage); } } catch (error) { console.error('加载语言设置失败:', error); } }; // 保存语言设置到本地存储 const saveLanguage = async (language: string) => { try { await AsyncStorage.setItem(LANGUAGE_KEY, language); } catch (error) { console.error('保存语言设置失败:', error); } }; // 修改语言切换函数 export const changeLanguage = async (language: string) => { await saveLanguage(language); i18n.changeLanguage(language); console.log("切换语言:" + language); }; // 初始化时加载语言设置 loadLanguage(); // 创建全局翻译函数 const t = (key: string, options?: any): string => { return i18n.t(key, options) as string; }; // 导出全局翻译函数 export { t }; export const getCurrentLanguage = () => { return i18n.language; }; export default i18n; // const resources = { // en: { // translation: { // selectCountry: 'Select your country', // subtitle: 'You can change the country & language in your profile settings anytime.', // welcomeTitle: 'Welcome!', // welcomeMessage: 'Thank you for choosing your country. You can now log in and use the app.', // loginNow: 'Log in now', // mainAppTitle: 'Welcome to MainApp', // mainAppText: 'This is the main application screen.', // resetCountry: 'Reset Country Selection', // loginTitle: 'Login For brainnel', // loginSubtitle: 'Login to start your business', // continueWithGoogle: 'Continue with Google', // continueWithFacebook: 'Continue with Facebook', // continueWithApple: 'Continue with Apple', // continueWithInstagram: 'Continue with Instagram', // continueWithEmail: 'Continue with Email', // continueWithPhone: 'Continue with phone number', // orContinueWith: 'Or continue with', // instagram: 'Instagram', // email: 'Email', // phone: 'Phone', // forgotPassword: 'Forget your password?', // termsText: 'By continuing, you agree to our', // termsOfUse: 'Terms of Use', // and: 'and', // privacyPolicy: 'Privacy Policy', // wholesalePrice: 'Wholesale price', // fastShipping: 'Fast shipping', // // Home Screen // shipping: 'Shipping', // quote: 'Quote', // tiktok: 'TikTok', // howToBuy: 'How to Buy', // all: 'All', // electronics: 'Electronics', // clothing: 'Clothing', // home: 'Home', // beauty: 'Beauty', // kids: 'Kids', // // Phone login screen // logInOrSignUp: 'Log in or sign up', // phoneNumber: 'Phone number', // enterPassword: 'Please re-enter your password', // passwordIncorrect: 'Password incorrect, please confirm your password.', // verificationCodeInfo: 'We will send a verification code on your number to confirm it\'s you.', // continue: 'Continue', // // Email login screen // pleaseEnterEmail: 'Please enter your e-mail address', // // Search Result Screen // searchProducts: 'Search products', // priceRange: 'Price range', // minPrice: 'Min price', // maxPrice: 'Max price', // reset: 'Reset', // apply: 'Apply', // price: 'Price', // lowToHigh: 'Low to high', // highToLow: 'High to low', // time: 'Time', // oldest: 'Oldest', // newest: 'Newest', // noResults: 'No results found for', // tryDifferentKeywords: 'Try using different keywords or check your spelling', // loadingMore: 'Loading more...', // noMoreData: 'No more data', // monthlySales: 'ventes', // // Search Screen // search: 'Search', // searchPlaceholder: 'Search products', // cancel: 'Cancel', // searchHistory: 'Search History', // hotSearch: 'Hot Search', // noRecentSearches: 'You have not recent searches', // headphones: 'Headphones', // computer: 'Computer', // tablet: 'Tablet', // watch: 'Watch', // camera: 'Camera', // homeAppliance: 'Home Appliance', // food: 'Food', // // Popular search terms // summerWomenClothes: 'Summer women clothes', // plusSizeWomen: 'Plus size women', // sexyUnderwear: 'Sexy underwear', // homeDecor: 'Home decor', // unusualToys: 'Unusual toys', // // Product Detail Screen // productDetail: 'Product Detail', // addToCart: 'Add to Cart', // buyNow: 'Buy Now', // color: 'Color', // size: 'Size', // moreFromStore: 'More from this Store', // viewAll: 'View All', // loadingProductInfo: 'Loading product information...', // productNotAvailable: 'Product is not available or has been removed', // customerService: 'Customer Service', // productDetails: 'Product Details', // loadingMoreProducts: 'Loading more products...', // noMoreProducts: 'No more products', // chatNow: 'Chat Now', // popularCategories: 'Popular Categories', // }, // }, // fr: { // translation: { // selectCountry: 'Sélectionnez votre pays', // subtitle: 'Vous pouvez modifier le pays et la langue dans les paramètres de votre profil à tout moment.', // welcomeTitle: 'Bienvenue!', // welcomeMessage: 'Merci d\'avoir choisi votre pays. Vous pouvez maintenant vous connecter et utiliser l\'application.', // loginNow: 'Se connecter maintenant', // mainAppTitle: 'Bienvenue sur MainApp', // mainAppText: 'Ceci est l\'écran principal de l\'application.', // resetCountry: 'Réinitialiser la sélection du pays', // loginTitle: 'Connexion à brainnel', // loginSubtitle: 'Connectez-vous pour démarrer votre entreprise', // continueWithGoogle: 'Continuer avec Google', // continueWithFacebook: 'Continuer avec Facebook', // continueWithApple: 'Continuer avec Apple', // continueWithInstagram: 'Continuer avec Instagram', // continueWithEmail: 'Continuer avec Email', // continueWithPhone: 'Continuer avec numéro de téléphone', // orContinueWith: 'Ou continuer avec', // instagram: 'Instagram', // email: 'Email', // phone: 'Téléphone', // forgotPassword: 'Mot de passe oublié?', // termsText: 'En continuant, vous acceptez nos', // termsOfUse: 'Conditions d\'utilisation', // and: 'et', // privacyPolicy: 'Politique de confidentialité', // wholesalePrice: 'Prix de gros', // fastShipping: 'Livraison rapide', // // Home Screen // shipping: 'Expédition', // quote: 'Devis', // tiktok: 'TikTok', // howToBuy: 'Comment acheter', // all: 'Tous', // electronics: 'Électronique', // clothing: 'Vêtements', // home: 'Maison', // beauty: 'Beauté', // kids: 'Enfants', // // Phone login screen // logInOrSignUp: 'Se connecter ou s\'inscrire', // phoneNumber: 'Numéro de téléphone', // enterPassword: 'Veuillez saisir à nouveau votre mot de passe', // passwordIncorrect: 'Mot de passe incorrect, veuillez confirmer votre mot de passe.', // verificationCodeInfo: 'Nous vous enverrons un code de vérification sur votre numéro pour confirmer que c\'est bien vous.', // continue: 'Continuer', // // Email login screen // pleaseEnterEmail: 'Veuillez entrer votre adresse e-mail', // // Search Result Screen // searchProducts: 'Rechercher des produits', // priceRange: 'Gamme de prix', // minPrice: 'Prix minimum', // maxPrice: 'Prix maximum', // reset: 'Réinitialiser', // apply: 'Appliquer', // price: 'Prix', // lowToHigh: 'Bas à élevé', // highToLow: 'Élevé à bas', // time: 'Temps', // oldest: 'Plus ancien', // newest: 'Plus récent', // noResults: 'Aucun résultat trouvé pour', // tryDifferentKeywords: 'Essayez d\'utiliser des mots-clés différents ou vérifiez votre orthographe', // loadingMore: 'Chargement...', // noMoreData: 'Plus de données', // monthlySales: 'Ventes mensuelles', // // Search Screen // search: 'Rechercher', // searchPlaceholder: 'Recherche', // cancel: 'Annuler', // searchHistory: 'Recherches récentes', // hotSearch: 'Populaires en ce moment', // noRecentSearches: 'Vous n\'avez pas de recherches récentes', // headphones: 'Écouteurs', // computer: 'Ordinateur', // tablet: 'Tablette', // watch: 'Montre', // camera: 'Appareil photo', // homeAppliance: 'Électroménager', // food: 'Alimentation', // // Popular search terms // summerWomenClothes: 'Vêtements d\'été femmes', // plusSizeWomen: 'Grande taille femmes', // sexyUnderwear: 'Sous vêtements hot', // homeDecor: 'Objet déco salon', // unusualToys: 'Jouet insolite', // // Product Detail Screen // productDetail: 'Détail du Produit', // addToCart: 'Ajouter au Panier', // buyNow: 'Acheter Maintenant', // color: 'Couleur', // size: 'Taille', // moreFromStore: 'Plus de ce Magasin', // viewAll: 'Voir Tout', // loadingProductInfo: 'Chargement des informations produit...', // productNotAvailable: 'Le produit n\'est pas disponible ou a été supprimé', // customerService: 'Service Client', // productDetails: 'Détails du Produit', // loadingMoreProducts: 'Chargement de plus de produits...', // noMoreProducts: 'Plus de produits', // chatNow: 'Discuter', // popularCategories: 'Catégories populaires', // }, // }, // zh: { // translation: { // // Home Screen // searchProducts: '搜索商品', // shipping: '运输', // quote: '报价', // tiktok: '抖音', // howToBuy: '如何购买', // all: '全部', // electronics: '电子产品', // clothing: '服装', // home: '家居', // beauty: '美妆', // kids: '儿童', // // Search Result Screen // priceRange: '价格范围', // minPrice: '最低价', // maxPrice: '最高价', // reset: '重置', // apply: '应用', // price: '价格', // lowToHigh: '低到高', // highToLow: '高到低', // time: '时间', // oldest: '最早', // newest: '最新', // noResults: '未找到搜索结果', // tryDifferentKeywords: '尝试使用不同的关键词或检查拼写', // loadingMore: '正在加载更多...', // noMoreData: '没有更多数据了', // monthlySales: '月销量', // // Search Screen // search: '搜索', // searchPlaceholder: '搜索商品', // cancel: '取消', // searchHistory: '历史搜索', // hotSearch: '热门搜索', // noRecentSearches: '暂无搜索记录', // phone: '手机', // headphones: '耳机', // computer: '电脑', // tablet: '平板', // watch: '手表', // camera: '相机', // homeAppliance: '家电', // food: '食品', // // Popular search terms // summerWomenClothes: '女士夏装', // plusSizeWomen: '女士大码', // sexyUnderwear: '性感内衣', // homeDecor: '家居装饰', // unusualToys: '奇特玩具', // // Product Detail Screen // productDetail: '商品详情', // addToCart: '加入购物车', // buyNow: '立即购买', // color: '颜色', // size: '尺寸', // moreFromStore: '来自此店铺的更多商品', // viewAll: '查看全部', // loadingProductInfo: '加载商品信息...', // productNotAvailable: '商品不存在或已下架', // customerService: '客服', // productDetails: '产品详情', // loadingMoreProducts: '正在加载更多产品...', // noMoreProducts: '没有更多产品了', // chatNow: '立即聊天', // popularCategories: '热门分类', // } // } // }; // const getDefaultLanguage = () => { // const locale = Localization.locale; // const languageCode = locale.split('-')[0]; // Get the language code part // return languageCode === 'fr' ? 'fr' : 'en'; // }; // i18n // .use(initReactI18next) // .init({ // resources, // lng: getDefaultLanguage(), // fallbackLng: 'en', // interpolation: { // escapeValue: false, // }, // }); // export default i18n;