import { useState, useEffect } from 'react'; let currentLanguage = localStorage.getItem('language') || 'zh'; let listeners = []; let translations = {}; // 动态加载翻译文件 async function loadTranslations(lang) { try { const [common, tools, aiproducts] = await Promise.all([ import(`../locales/${lang}/common.json`), import(`../locales/${lang}/tools.json`), import(`../locales/${lang}/aiproducts.json`) ]); translations[lang] = { ...common.default, tools: tools.default, aiproducts: aiproducts.default }; return true; } catch (error) { console.error(`Failed to load translations for ${lang}:`, error); return false; } } // 初始加载默认语言的翻译 const initPromise = loadTranslations(currentLanguage); export async function setLanguage(lang) { if (!translations[lang]) { const loaded = await loadTranslations(lang); if (!loaded) return; } currentLanguage = lang; localStorage.setItem('language', lang); listeners.forEach(listener => listener(currentLanguage)); } export function getLanguage() { return currentLanguage; } export function t(key) { if (!translations[currentLanguage]) { return key; } const keys = key.split('.'); let value = translations[currentLanguage]; for (const k of keys) { if (value[k] === undefined) { return key; } value = value[k]; } return value; } export function useTranslation() { const [lang, setLang] = useState(currentLanguage); const [isLoading, setIsLoading] = useState(true); useEffect(() => { // 等待初始翻译加载完成 initPromise.then(() => { setIsLoading(false); }); const listener = (newLang) => setLang(newLang); listeners.push(listener); return () => { listeners = listeners.filter(l => l !== listener); }; }, []); return { t, lang, setLanguage, isLoading }; }