// 导入语言包 import zhCN from './zh-CN.json'; import enUS from './en-US.json'; // 定义语言映射 const langMap = { 'zh-CN': zhCN, 'en-US': enUS }; // 默认语言(优先从本地存储读取,无则用浏览器默认) let currentLang = localStorage.getItem('app-lang') || (navigator.language || 'zh-CN').toLowerCase(); // 兼容浏览器语言缩写(如en -> en-US) currentLang = currentLang === 'zh' ? 'zh-CN' : currentLang === 'en' ? 'en-US' : currentLang; // 当前语言包数据 let currentLangData = langMap[currentLang] || zhCN; // 语言切换回调函数(用于更新页面) let langChangeCallback = null; // 语言管理对象 const i18n = { // 获取当前语言 getLang() { return currentLang; }, // 切换语言 setLang(lang) { if (!langMap[lang]) return; // 语言包不存在则不处理 currentLang = lang; currentLangData = langMap[lang]; localStorage.setItem('app-lang', lang); // 持久化 // 触发回调更新页面 if (langChangeCallback) langChangeCallback(); }, // 获取翻译文本(支持嵌套路径,如'common.title') t(key) { return key.split('.').reduce((obj, k) => obj?.[k] || key, currentLangData); }, // 注册语言切换回调 onLangChange(callback) { langChangeCallback = callback; } }; export default i18n;