| | |
| | | import zh from "./zh" |
| | | import py from "./py" |
| | | import en from "./en" |
| | | import { useLocale } from 'element-plus'; |
| | | import enLocale from 'element-plus/es/locale/lang/en'; |
| | | import zhLocale from 'element-plus/es/locale/lang/zh-cn'; |
| | | |
| | | let messages = { |
| | | zh:zh, |
| | | zh: {...zh, ...zhLocale}, |
| | | py:py, |
| | | en: en |
| | | en: {...en, ...enLocale} |
| | | } |
| | | |
| | | const i18n = createI18n({ |
| | |
| | | messages |
| | | }) |
| | | |
| | | const syncElementLocale = () => { |
| | | // 在方法内调用 useLocale(确保在 Vue 上下文内) |
| | | const { locale } = useLocale(); |
| | | const currentLang = i18n.global.locale.value; |
| | | // 根据当前语言切换 Element 组件的语言包 |
| | | if (currentLang === 'zh') { |
| | | locale.value = { ...zhLocale }; // 中文内置文本 |
| | | } else { |
| | | locale.value = { ...enLocale }; // 英文内置文本 |
| | | } |
| | | |
| | | // 额外触发一次 i18n 刷新(解决缓存问题) |
| | | i18n.global.locale.value = currentLang; |
| | | }; |
| | | |
| | | // 初始化同步 |
| | | syncElementLocale(); |
| | | |
| | | // 语言切换方法 |
| | | export const switchLang = (lang) => { |
| | | localStorage.setItem('lang', lang); |
| | | i18n.global.locale.value = lang; |
| | | syncElementLocale(); // 切换后同步 |
| | | }; |
| | | export { syncElementLocale }; |
| | | export default i18n |