当前位置:   article > 正文

vue中英文切换i18n_vue3后台管理项目中实现中英文切换

vue3后台管理项目中实现中英文切换
  1. 下载il8n插件
cnpm i il8n -S

  1. 全局引入il8n
  1. import i18n from './i18n/i18n'
  2. new Vue({
  3. el: '#app',
  4. router,
  5. store,
  6. i18n,
  7. render: c => c(App)
  8. })
  1. il8n.js内容
  1. import Vue from 'vue'
  2. import locale from 'element-ui/lib/locale';
  3. import VueI18n from 'vue-i18n'
  4. import messages from './langs'
  5. Vue.use(VueI18n)//从localStorage获取语言选择。
  6. const i18n = new VueI18n({
  7. locale: localStorage.lang || 'cn',
  8. //默认 cn 中文
  9. messages,
  10. })
  11. locale.i18n((key, value) => i18n.t(key, value))
  12. //兼容element
  13. export default i18n
  1. cn.js和en.js文件结构属性名要一一对应
  1. ================cn.js====
  2. export default {
  3. basic: {
  4. welcome:'欢迎',
  5. guide: '有关如何配置/自定义此项目的指南和方法,请查看vue-cli文档。'
  6. }
  7. }
  8. ==========en.js=========
  9. export default {
  10. basic: {
  11. welcome:'Welcome',
  12. guide: 'For a guide and recipes on how to configure / customize this project,check out the vue-cli documentation.'
  13. }
  14. }
  1. 使用通过下拉菜单实现切换
  1. <el-select v-model="selectValue" @change="langChange" placeholder="请选择语言" class="lang">
  2. <el-option
  3. v-for="item in langtrigger"
  4. :key="item.value"
  5. :label="item.label"
  6. :value="item.value"
  7. ></el-option>
  8. </el-select>
  1. //data数据,默认是cn
  2. selectValue:'cn',
  3. langtrigger: [
  4. { value: 'cn', label: '中文' },
  5. { value: 'en', label: 'English' }
  6. ],
  7. //methods中的change事件
  8. langChange (e) {
  9. localStorage.setItem('lang', e)
  10. this.$i18n.locale = e
  11. this.langtrigger = e
  12. },
  1. 使用en.js和en.js的属性值 $t()固定写法就可以实现了
  1. <div>欢迎</div> //原来的写法,写死
  2. <div>{{ $t("basic.welcome") }}</div>//现在可以中英文切换

记录一个面包屑导航的中英文切换,

  1. 首先在router中给每个路由设置中英文版本,例如:
  1. {
  2. name: [['Project', 'Create']],
  3. path: '/project/config/add',
  4. component: () => import('../pages/project/addproject.vue'),
  5. meta: ['项目管理', '新建项目']
  6. },
  1. 其次在面包屑导航中跳转获取
  1. <el-breadcrumb separator="/" style="font-size: 14px" class="bread">
  2. <!-- <el-breadcrumb-item :to="{ path: '/homepage' }">首页</el-breadcrumb-item> -->
  3. <el-breadcrumb-item
  4. v-for="(item) in selectValue=='cn'?$route.meta:$route.name[0]"
  5. :key="item"
  6. :to="$route.path"
  7. >
  8. <a href="#">{{item}}</a>
  9. </el-breadcrumb-item>
  10. </el-breadcrumb>

selectValue这个值是上面根据下拉菜单的双向绑定后选择中英文切换。点击下拉选择后

效果如下:

如果是在el-table的内容也想实现中英文的话(固定的写法,不用后台传输的数据实现)

思路:通过后台传入的值判断当前行的某一列是什么值,值为il8n的自己编辑好的值。这样在实现中英切换的时候就能动态显示了

  1. this.tabledata=[]
  2. res.data.forEach(item=>{
  3. var obj={}
  4.     if(item.cc==1){
  5.     obj.date=this.$t(en.js文件的属性)
  6. }
  7. this.tabledata.pus(obj)
  8. })
  1. 侧边导航中英文切换
  1. 在语言包里面定义好侧边导航

  1. 在路由里单独导入封装好的语言包

  1. 路由中使用title:`${i18n.t("common.quanbu")}`

  1. import i18n from "@/utils/i18n/index";
  2. {path: '/about',meta:{title:`${i18n.t("common.quanbu")}`,icon:'el-icon-present',level:1,roles:['super','normal']},component: About,children:[
  3. {path:"",component: () => import("../views/vue-calendar.vue")}
  4. ]},
  1. 效果如下,测试已成功

  1. 不刷新页面实现中英文切换
  1. <div class="right_lang">
  2. <!---中英文切换-->
  3. <i
  4. v-show="selectValue=='cn'"
  5. class="font_family el-icon-s-flag en-click-css"
  6. @click="langChange('en')"
  7. />
  8. <i
  9. v-show="selectValue=='en'"
  10. class="font_family el-icon-s-promotion e en-click-css"
  11. @click="langChange('cn')"
  12. />
  13. </div>
  14. //data数据
  15. selectValue: 'cn',
  16. //methods数据
  17. // 不刷新页面中英文切换
  18. langChange (e) {
  19. console.log(e)
  20. this.selectValue = e
  21. this.$local.set('lang', e)
  22. this.$i18n.locale = e
  23. this.LangChange = e
  24. var oriSetItem = this.$local.set
  25. this.$local.set = function (key, value) {
  26. // 这里抛出自定义事件
  27. var event = new Event('setLangEvent')
  28. event.new_lang = value
  29. window.dispatchEvent(event)
  30. // 实现原方法
  31. oriSetItem.apply(this, arguments)
  32. }
  33. }

文章到此结束,希望对你有所帮助~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/332185
推荐阅读
相关标签
  

闽ICP备14008679号