当前位置: 首页 > news >正文

vue+iview+i18n国际化

首先安装i18n 和 js-cookie

npm install vue-i18n
npm install js-cookie --save

第一步:

新建src/language文件夹 和src/language/config,在language下新建文件index.js,在language/config下新建zh.js(中文) en.js(英文) 文件。


image.png

第二步:

index.js文件

import Vue from 'vue/dist/vue.min.js';
import VueI18n from 'vue-i18n/dist/vue-i18n';
import Cookies from 'js-cookie';
import iviewEN from 'iview/dist/locale/en-US';
import iviewZH from 'iview/dist/locale/zh-CN';// 存储在本地,刷新后不会丢失
const language = Cookies.get('language') || 'zh';
Cookies.set( 'language' , language )Vue.use(VueI18n)
const messages = {'zh':{...require('./config/zh.js'),...iviewZH},'en':{...require('./config/en.js'),...iviewEN}
}
const getLanguage = function () {let lang = navigator.browerLanguage?navigator.browerLanguage:navigator.language||navigator.userLanguagelang = lang?lang:'zh'if(Cookies.get('language')){lang = Cookies.get('language')}return lang
}
const i18n = new VueI18n({locale:getLanguage(),messages
})
export default i18n;

en.js 英文翻译文件

module.exports = {navbar: {English: 'English',Chinese: 'chinese',Tc: 'traditional Chinese',homepage: 'home page',personal: 'personal',logout: 'logout',language: 'language'}
}

zh.js 英文翻译文件

module.exports = {//头部navbar:{English:'英文',Chinese:'中文',Tc:'繁体',homepage:'首页',personal:'个人中心',logout:'退出登录',language:'语言'   } 
}

第三步

在main.js引入,挂载

import VueI18n from "vue-i18n"
import i18n from "./language"
Vue.use(VueI18n)//注入到所有的子组件
const app = new Vue({el: '#app',router,store,i18n,//挂载components: { App },template: '<App/>'
})

第四步 使用

<Dropdown trigger="click" @on-click="handleClickDropdown2"><a href="javascript:void(0)" style="color:#ffffff"><div class="demo-avatar">{{lang}}</div></a><DropdownMenu slot="list"><DropdownItem name="ch">{{$t('navbar.Chinese')}}</DropdownItem><DropdownItem name="en">{{$t('navbar.English')}}</DropdownItem><DropdownItem name="tw">{{$t('navbar.Tc')}}</DropdownItem></DropdownMenu></Dropdown>export default{data(){return{lang:''}},methods:{//语言选择handleClickDropdown2(name){if(name === 'ch'){this.lang="中文"this.$i18n.locale = 'zh'//这是在locale里Index.js定义的中文变量}else if(name === 'en'){this.lang="English"this.$i18n.locale = 'en'}else if(name === 'tw'){this.lang='繁體'this.$i18n.locale = 'tw'}},}
}

第五步 在js中使用

在main.js里给vue对象赋值给一个变量

window.vm=new Vue({el: '#app',router,i18n,store,components: { App },template: '<App/>'
}).$mount('#app')

在js里使用

<div class="demo-avatar">{{lang}}</div>export default{data(){return{lang:window.vm.$t('navbar.language')//使用国际化}}
}
最后编辑于:2025-06-15 10:17:27


喜欢的朋友记得点赞、收藏、关注哦!!!

http://www.lryc.cn/news/599591.html

相关文章:

  • Qt:qRegisterMetaType函数使用介绍
  • 如何在 FastAPI 中玩转 GraphQL 和 WebSocket 的实时数据推送魔法?
  • 【数据库】AI驱动未来:电科金仓新一代数据库一体机如何重构性能边界?
  • ESP32学习笔记_Peripherals(4)——MCPWM基础使用
  • 内存优化:从堆分配到零拷贝的终极重构
  • IPv6实战指南:从接入到应用
  • 升级的MS2130S USB3.0高清视频采集芯片
  • 服务器安装虚拟机全步骤
  • 每日一道算法题(八)
  • C++实战:数据标准化高效实现
  • Redis 5.0.14安装教程
  • c# openxml 打开加密 的word读取内容
  • mac下 vscode 运行 c++无法弹出窗口
  • 0人工沟通,它如何用AI撬动海外B端9400亿采购市场?
  • 工程师实践出真知
  • 用友ERP 反射xss漏洞复现(CVE-2025-2709)
  • JVM相关面试八股
  • [LeetCode]每日温度
  • 初识JVM--从Java文件到机器指令
  • OpenRLHF:面向超大语言模型的高性能RLHF训练框架
  • Kubernetes配置管理
  • k8s 中的 deployment,statefulset,daemonset 控制器的区别
  • k8s的service、deployment、探针详解
  • 算法训练营day31 贪心算法⑤56. 合并区间、738.单调递增的数字 、968.监控二叉树
  • Python常用医疗AI库以及案例解析(场景化进阶版)
  • 【小沐学GIS】基于Unity3d绘制三维数字地球Earth(Unity3d、OpenGL、GIS)
  • 10BASE-T1S核心机制——PLCA参数详解
  • Nginx 替换 SSL 证书后的正确操作及常见问题排查
  • go语言基础教程:【2】基础语法:基本数据类型(整形和浮点型)
  • JAVA知识点(四):SpringBoot与分布式、微服务架构