i18n vue 多语言配置,切换刷新
实现项目多语言切换
1.引入i18n插件
npm install i18n --save-dev
2.在main.js中挂载
import i18n from '@/plugins/i18n' new Vue({ i18n }).$mount('#app')
3.创建i18n.js文件添加配置
import Vue from 'vue' import VueI18n from 'vue-i18n' import messages from '@/lang' import ElementLocale from 'element-ui/lib/locale' Vue.use(VueI18n) const lang = (localStorage.getItem('languageSet') || 'zh').toLowerCase() export const i18n = new VueI18n({ locale: lang, // 当前语言环境 this.$i18n.locale = 'en' fallbackLocale: 'zh', // 默认语言环境。如果locale中无匹配项则采用该项值 messages, // set locale messages silentTranslationWarn: true }) i18n.setLang = (lang) => { i18n.locale = lang return lang } i18n.setTitle = (lang) => { if (i18n.locale === lang && document.title && document.title.indexOf('menu') !== -1) { const titles = document.title.split('-') document.title = titles.length > 1 ? i18n.t(titles[0].trim()) + ' - ' + i18n.t(titles[1].trim()) : i18n.t(titles[0].trim()) } } i18n.loadModules = () => { import('@/lang/zh.js').then((messages) => { const newMessages = Object.assign(i18n.getLocaleMessage('zh'), messages.default) i18n.setLocaleMessage('zh', newMessages) i18n.setTitle('zh') }) import('@/lang/en.js').then((messages) => { const newMessages = Object.assign(i18n.getLocaleMessage('en'), messages.default) i18n.setLocaleMessage('en', newMessages) i18n.setTitle('en') }) Vue.locale = () => {} Vue.config.lang = lang ElementLocale.i18n((key, value) => i18n.t(key, value)) } export default i18n
4.在App.vue中添加监听,监听以后可以实时切换语言且页面没有整体刷新效果
watch: { '$i18n.locale'(newVal, oldVal) { if (newVal !== oldVal) { this.reload() } }, },
5.在页面对应位置添加事件切换语言
// 切换语言 changeLang(type) { localStorage.setItem('languageSet', type) this.$i18n.locale = type //用于切换语言监听,实时刷新语言 this.s_local = type //用于本地控制选中状态 }
以前未深想,此间未重逢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)