源码地址:git clone i18n-demo: vue2、vue3实现i18n国际化功能
默认语言是中文:
点击语言切换,变成英文(这里简单设置了中文、英文两种语言)
注意:vue2支持 vue-i18n 版本8.0 +,vue3支持vue-i18n版本9.0+ !!!!!!
(1)src下建立locale文件夹,标识国际化相关代码(起什么名字随意)
(2)locale文件夹下建立lang文件夹用于目标国家语言的手动翻译,index.js文件将i18n实例导出到main.js中
(3)locale/index.js文件用于实例化i18n插件,并在vue中使用i18n插件,messages就是自动翻译的语言包
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import messages from './lang'Vue.use(VueI18n)const i18n = new VueI18n({locale: 'zh',messages,
});
export default i18n;
(4)zh.js代表中文翻译包、en.js代表英文翻译包
zh代表目标语言为中文,i18n能识别出来
export default {zh: {title: '后台管理系统',schoolModule: {title: '学校模块',kindergarten: '幼儿园',primary: '小学',junior: '初中',senior: '高中',university: '大学'}}
}
en.js代表目标语言为英文,i18n能识别出来
export default {en: {title: 'management system',schoolModule: {title: 'schoolModule',kindergarten: 'kindergarten',primary: 'primary',junior: 'junior',senior: 'senior',university: 'university'},}
}
locale/lang/index.js是所有目标国家语言翻译的出口,也就是上图中的messages
import zh from './zh'
import en from './en'
export default {...en,...zh
}
(5)使用
- template中使用为 $t('title')
- script中使用 this.$i18n.locale 获取当前语言类型,this.$t('title'):获取当前语言翻译结果
(1)vue3的文件locale文件夹下lang文件夹内容与上面一模一样,不同的是vue3实例化i18n不同
(2)locale/index.js
import { createI18n } from 'vue-i18n'import messages from './lang'
const i18n = createI18n({legacy: false, //处理报错Uncaught (in promise) SyntaxError: Not available in legacy mode (at message-compiler.esm-bundler.js:54:19)locale: 'zh',messages
})export default (app) => {app.use(i18n)
}
(3)main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// 导入多语言
import lang from './locale'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'const app = createApp(App)
// 将多语言挂在到vue中
lang(app)app.use(store).use(ElementPlus).use(router).mount('#app')
(4)使用
- template中使用为 $t('title')
- script中使用为
import { useI18n } from 'vue-i18n'
// locale为响应式的值
const { t, locale } = useI18n();
console.log('t:', t('title'))
console.log('locale:', locale.value)
深圳SEO优化公司徐州品牌网站设计报价衡阳百度网站优化排名报价飞来峡设计网站价格滨州SEO按天扣费多少钱贵阳百姓网标王推广金昌百搜标王价格珠海seo排名价格阿坝网站优化按天收费报价昌吉网站优化按天计费价格阳江seo排名推荐潜江网站优化按天扣费公司铁岭百度网站优化排名公司泰州百度seo公司锦州网站优化软件价格固原网站优化排名报价合肥网站改版价格张掖网站排名优化哪家好中山网站制作设计多少钱山南网站关键词优化价格张掖seo网站推广公司益阳如何制作网站公司海口网站优化按天计费公司平湖网站改版报价郴州网站设计报价河池seo网站优化哪家好保定网站搭建推荐临汾外贸网站建设价格盘锦网站seo优化和县网站推广工具哪家好邯郸网站开发公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运