import { ref, computed } from 'vue' import type { Language } from '@/types/tools' import { locales } from '@/config/i18n' // 全局语言状态 const currentLanguage = ref('zh') export const useLanguage = () => { // 获取当前语言的翻译对象 const translation = computed(() => locales[currentLanguage.value]) // 翻译函数 const t = (key: string, params?: Record) => { const keys = key.split('.') let value: any = translation.value for (const k of keys) { value = value?.[k] } let result = value || key // 替换参数 if (params && typeof result === 'string') { Object.keys(params).forEach(param => { result = result.replace(`{${param}}`, params[param]) }) } return result } // 切换语言 const switchLanguage = (lang: Language) => { currentLanguage.value = lang localStorage.setItem('preferred-language', lang) } // 从本地存储恢复语言 const restoreLanguage = () => { const saved = localStorage.getItem('preferred-language') as Language if (saved && (saved === 'zh' || saved === 'en')) { currentLanguage.value = saved } } return { language: currentLanguage, t, switchLanguage, restoreLanguage } }