vue使用vue-i18n实现国际化的实现代码
程序员文章站
2023-11-11 20:49:46
需求
公司项目需要国际化,点击按钮切换中文/英文
1、安装
npm install vue-i18n --save
2、注入 vue 实例中,项目中实现...
需求
公司项目需要国际化,点击按钮切换中文/英文
1、安装
npm install vue-i18n --save
2、注入 vue 实例中,项目中实现调用 api 和 模板语法
import vuei18n from 'vue-i18n' vue.use(vuei18n) ; const i18n = new vuei18n({ locale: 'zh-cn', // 语言标识, 通过切换locale的值来实现语言切换,this.$i18n.locale messages: { 'zh-cn': require('./common/lang/zh'), // 中文语言包 'en-us': require('./common/lang/en') // 英文语言包 } }) new vue({ el: '#app', i18n, // 最后 router, template: '<app/>', components: { app } })
3、对应语言包
zh.js中文语言包:
export const lang = { homeoverview:'首页概览', firmoverview:'公司概述', firmreports:'财务报表', firmappendix:'更多附录', firmindex:'主要财务指标', firmanalysis:'对比分析', firmnews:'新闻事件档案', firmother:'其他功能', }
en.js 英文语言包:
export const lang = { homeoverview:'home overview', firmoverview:'firmoverview', firmreports:'firmreports', firmappendix:'firmappendix', firmindex:'firmindex', firmanalysis:'firmanalysis', firmnews:'firmnews', firmother:'firmother' }
4、按钮控制切换语言
this.$i18n.locale,当你赋值为‘zh-cn'时,导航栏就变成中文;当赋值为 ‘en-us'时,就变成英文:
<div class="top_btn" @click="changelangevent">中文</div>
changelangevent() { console.log('changelangevent'); this.$confirm('确定切换语言吗?', '提示', { confirmbuttontext: '确定', cancelbuttontext: '取消', type: 'warning' }).then(() => { if ( this.$i18n.locale === 'zh-cn' ) { this.$i18n.locale = 'en-us';//关键语句 console.log('en-us') }else { this.$i18n.locale = 'zh-cn';//关键语句 console.log('zh-cn') } }).catch(() => { console.log('catch'); this.$message({ type: 'info', }); }); }
5、模板渲染
静态渲染:
<span v-text="$t('lang .homeoverview')"></span> <span>{{$t('lang .homeoverview')}}</span>
如果是element-ui 的,在要翻译的前面加上冒号
比如:label="用户姓名" 就改成 :label="$t('order.username')"
动态渲染:
<span class="el-dropdown-link">{{navcompany}}</span> computed:{ navcompany:function(){ if(this.nav_company){ let str = 'lang'+this.nav_company; return this.$t(str); } } }, <el-submenu v-for="(value, title1, one) in navlist" :key="one+1" :index="(one+1).tostring()"> <template slot="title"> <router-link :to="linklist[title1]">{{ gettitle(title1) }}</router-link> </template> </el-submenu> methods: { gettitle(title){ let str = 'lang.'+title; return this.$t(str); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。