运用i18n 实现国际化(中英文切换)

article/2025/10/3 9:03:56

使用 vue-i18n 进行Vue国际化处理,使项目切换中英文

1.下载安装插件
命令进入项目目录,执行以下命令安装vue 国际化插件vue-i18n

npm install vue-i18n --save

2. 项目增加国际化翻译文件
在项目的src下添加lang文件夹增加中文翻译文件(zh.js)以及英文翻译文件(en.js),里面分别存储项目中需要翻译的信息。

 

en.js 英文语言包:

export const m = { // 导航栏navbar:{HOME:'HOME',ABOUTUS:'ABOUT US',SERVICES:'SERVICES',LIVERATE:'LIVE RATE',NEWS:'NEWS',CONTACTUS:'CONTACT US'},// 底部footer:{CONTACTUS:'CONTACT US',WEBSITENAVIGATION:'WEBSITE NAVIGATION',ABOUTUS:'ABOUT US',OURSERVICES:'OUR SERVICES',NEWS:'NEWS',LIVERATE:'LIVE RATE',CUSTOMERSERVICE:'CUSTOMER SERVICE',WECHAT:'WECHAT'},// 首页index:{SERVICES:'SERVICES',NEWS:'NEWS',GOLDMATENEWS:'GOLDMATE NEWS',MARKETINSIGHT:'MARKET INSIGHT',KUNDAX:'KUNDAX',GOLDMATE:'GOLDMATE',GOLDMATEGROUP:'GROUP',KUNDAGROUP:'GROUP'}
}


 zh.js 中文语言包

export const m = { // 导航栏navbar:{HOME:'首页',ABOUTUS:'关于我们',SERVICES:'主营业务',LIVERATE:'实时汇率',NEWS:'最新资讯',CONTACTUS:'联系我们'},// 底部footer:{CONTACTUS:'联系我们',WEBSITENAVIGATION:'网站地图',ABOUTUS:'关于我们',OURSERVICES:'主营业务',NEWS:'最新资讯',LIVERATE:'实时汇率',CUSTOMERSERVICE:'客服热线',WECHAT:'微信公众号'},// 首页index:{SERVICES:'主营业务',NEWS:'最新资讯',GOLDMATENEWS:'公司要闻',MARKETINSIGHT:'汇市动态',KUNDAX:'坤达速汇',GOLDMATE:'中联汇兑',GOLDMATEGROUP:'中联集团介绍',KUNDAGROUP:'坤达集团介绍'}
}


3. 项目引入

import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
const i18n = new VueI18n({locale: 'zh-CN',    // 语言标识//this.$i18n.locale // 通过切换locale的值来实现语言切换messages: {'zh-CN': require('./lang/zh'),   // 中文语言包'en-US': require('./lang/en')    // 英文语言包}
})
new Vue({el: '#app',router: router,i18n,// 不要忘记render: h => h(App),mounted () {},created () {}
});


上面的代码正式将 vue-i18n 引入 vue 项目中,创建一个 i18n 实例对象,方便全局调用。我们通过 this.$i18n.locale 来进行语言的切换。当 locale 的值为‘zh-CN’时,版本为中文;当 locale 的值为‘en-US’,版本为英文。当然你也可以换成 zh 和 en,这个不固定,只需要对应上。

4. 语言切换

// 切换语言changeLanguage() {if (this.language == "zh-CN") {this.language = "en-US";this.$i18n.locale = this.language; //关键语句this.addCookie("lang", this.language);} else {this.language = "zh-CN";this.$i18n.locale = this.language; //关键语句this.addCookie("lang", this.language);}location.reload();},


this.$i18n.locale,当你赋值为‘zh-CN’时,就变成中文;当赋值为 ‘en-US’时,就变成英文。

5.vue-i18n 数据渲染的模板语法
我们知道 vue 中对于文字数据的渲染,有以‘’{{}}‘’或者 v-text、v-html等的形式,同样的使用国际化后,依旧可以沿用,但需要一点修改。 

//v-text:
<span v-text="$t('m.navbar.HOME')"></span>//{{}}:
<span>{{$t('m.navbar.HOME')}}</span>


6.iview组件中的中英文切换

<FormItem :label="$t('m.exchangeRate.Rate')" prop="exchangeRate"><Input clearable class="longInput" v-model="formValidate.exchangeRate" :placeholder="$t('m.exchangeRate.input')"></Input>
</FormItem>


7.如何实现整个项目语言切换
公司项目如此:

(1)所有获取数据的接口提供一个参数用于获取中文或英文的数据

(2)固定的展示文字的放入语言包中切换即可

(3)将当前语言类型存入cookie中

(4)进入页面即获取cookie中的语言类型去设置请求数据的接口所对应语言的参数

(5)切换语言时,首先判断当前语言是中文还是英文,并做对应的切换,最后将切换的语言存入cookie中

(6)问题:当前页面的接口无法切换语言

解决:重新刷新页面即可

location.reload();
 

使用vue-i18n实现国际化,获取浏览器默认语言

index.js文件的相关代码如下:

import Vue from 'vue'
import VueI18n from 'vue-i18n'Vue.use(VueI18n)const navLang = navigator.language || navigator.userLanguage
let localLang = navLang || false
let lang = localLang || localRead('local') || 'enUS'
localStorage.setItem('lang', localLang)const i18n = new VueI18n({locale: lang, // 语言标识messages: {'zhCN': require('./zh-CN.js'),'zhTW': require('./zh-TW.js'),'enUS': require('./en-US.js')}
})export default i18n

通过浏览器语言自动切换

接下来主要做的就是在加载路由的时候让系统自动检测localStorage中的lang是否存在,如果存在则说明用户已经访问过我们的系统,如果不存在我们就为其添加lang设置。由于我们也不知道用户会从哪里进入系统,所以最好的是在每次路由加载的时候去处理,这里我们可以用到Vuerouter的beforeEach函数,具体可以参考:Vue实战040:nprogress页面加载进度条,这里有对beforeEach的介绍。

router.beforeEach((to, from, next) =&gt; {NProgress.start()if (!localStorage.getItem('lang')) {let lang = navigator.languageif (lang === 'zh' || lang === 'zh-CN') {localStorage.setItem('lang', 'zh-CN')} else {localStorage.setItem('lang', 'en-US')}}next()
})

到这里你应该会发现一个问题,那就是第一次访问的时候并没有实现自动切换语言的功能,但是在localStorage中我们又可以看到lang已经被赋值,只有当页面再次刷新的时候才生效了。解决这个问题的办法就是将i18n.locale属性配置放入Vue中来,这样加载系统的时候就会自动去刷新i18n.locale属性了。

new Vue({router,store,i18n, // 挂载created () {i18n.locale = localStorage.getItem('lang')},render: h =&gt; h(App)
}).$mount('#app')


http://chatgpt.dhexx.cn/article/Ce5AeRW4.shtml

相关文章

js实现中英文切换

js实现中英文切换 1.html <!DOCTYPE html><head><title>中英文切换</title><meta charset"UTF-8" /><script type"text/javascript" src"js/jquery.js"></script><script type"text/javasc…

Qt中英文切换(涉及多种场景)

qt中英文切换涉及到一个软件两个文件&#xff0c;分别是QtLinguist、.ts文件和.qm文件。 1、在Pro中添加 TRANSLATIONS en.ts \ch.ts添加这个文件后qmake&#xff0c;然后如下操作点击更新&#xff1a; 这个时候会生成2两个文件en.ts和ch.ts。 2、将这两个文件添加到项目中…

【Windows】中英文切换快捷键Caps

在 Windows 11 下中英文切换使用 Shift 快捷键&#xff0c;在 MacOS 是 Caps 快捷键。使用下面的步骤&#xff0c;就可以将 Windows 的中英文切换快捷键也使用和 Mac 的一样&#xff1a; 下载并安装Powertoys在键盘管理器中增加重新映射键&#xff1a; 设置好之后立即生效&am…

Win10系统中英文切换

购买的大型仪器设备&#xff0c;可能是海关进口的&#xff0c;其配套控制软件可能会运行在英文界面环境&#xff0c;在原配控制电脑故障或者更换时&#xff0c;存在安装英文OS操作系统的需求&#xff0c;经搜索发现Win10操作系统可以直接切换中英文语言&#xff0c;这里记录下&…

VS2019 中英文切换

1.点击工具选项 --->选择选项 2.点击环境--->选择区域设置---->选择English---->点击确认 3.如下图所示中文切换英文完成 4.英文切换中文操作如上步骤

pycharm界面改为中文,中英文切换

打开pycharm&#xff0c;选择“plugins”&#xff08;插件&#xff09;。 在plugins市场的搜索框&#xff0c;输入“chinese” 选择第二个插件&#xff0c;点击插件后面的安装按钮“install”&#xff0c;会自己安装&#xff0c;安装好后&#xff0c;软件会要求重新启动&…

Altium Designer 20的中英文切换

前言 上一篇给大家介绍了怎么安装Altium Designer 20&#xff0c;那么今天这一篇给大家介绍怎么对Altium Designer 20进行中英文模式切换&#xff0c;话不多说&#xff0c;上图&#xff01; 1.双击打开AD 20 2.此时是英文状态下的界面 3.点击设置图标 4.点击System——Genera…

PyCharm中英文版本切换

前几天&#xff0c;同门用我电脑软件pycharm&#xff0c;因为我设置的是英文版的&#xff0c;他啥也看不懂&#xff0c;因此今天分享一下pycharm中文设置方法&#xff0c;快来点赞收藏吧....... 1. 英文切换到中文 点击File&#xff0c;找到Settings 进入Settings&#xff0c…

VS 2022 中英文切换

装了纯净的 win11 pro N 版本系统之后&#xff0c;发现系统是全英文的&#xff0c;卸载又麻烦&#xff0c;将就着用了&#xff0c;在装完 VS 之后&#xff0c;发现默认的也是英文环境&#xff0c;这下玩不转了&#xff0c;所以要换成中文环境&#xff0c;记录下操作过程。 在工…

花一分钟彻底搞懂Mac输入法/中英文/大小写切换

最近有麦友说&#xff1a;没搞懂 Mac 怎么切换输入法、中英文和大小写&#xff0c;比如以前点按大写锁定键就可以切换到大写&#xff0c;现在要长按。有的时候点按大写锁定键或 shift 键都可以切换中英文&#xff0c;有的时候又不行。切换的时候基本就是碰运气瞎按。 之所以会有…

树的深度和高度

定义 深度&#xff1a;对于任意节点n,n的深度为从根到n的唯一路径长&#xff0c;根的深度为0&#xff1b; 高度&#xff1a;对于任意节点n,n的高度为从n到一片树叶的最长路径长&#xff0c;所有树叶的高度为0&#xff1b; 树的高度 &#xff1a;树的高度是它的所有节点中的最…

树的深度和高度的区别

树的深度和高度区别【数据结构】 关于树的深度和高度我一直容易混淆&#xff0c;故写这篇博客记录。 先来看我从PPT里找到的答案 也就是节点的层次/深度是从根开始数的&#xff0c;离根节点的路径长度为深度&#xff0c;根节点的深度为0。 而结点的高度是从叶子节点开始数的&…

树的高度和深度概念

树的高度和深度概念 1.高度2.深度3.总结 1.高度 对于高度的理解&#xff0c;我们不管他数据结构什么什么知识&#xff0c;就拿楼房来说&#xff0c;假如一个人提问&#xff1a;楼房的高度有好高&#xff1f;我们会下意识的从底层开始往上数&#xff0c;假如楼有6层&#xff0c…

图的遍历生成树(深度遍历和广度遍历)

基本思想 深度优先遍历生成森林 1&#xff09;遍历无向图的各顶点&#xff0c;将其作为一个初始点&#xff0c;建立深度优先生成树 2&#xff09;在建树函数DFSTree()中&#xff0c;设置标识&#xff0c;将第一个结点设置为根节点的左孩子&#xff0c;其余结点作为左孩子的兄弟…

关于树的深度和高度的计算

关于树的深度和高度的计算&#xff0c;我看到两个不同的说法&#xff0c;它们的区别就在于到底是从0开始计算还是从1开始计算。&#xff08;网上的和算法题偏向说法二&#xff0c;如果有能找到更加权威的解答望不吝赐教&#xff09; 说法一&#xff1a; 《数据结构与算法分析&…

树的高度与深度--真情版

文章目录 一. 前言二. 大话高度与深度三. OJ题中使用的版本四. 考研中使用的版本五. 总结 一. 前言 数据结构-----树的学习过程中&#xff0c;我们会遇见一些摸棱两可的概念&#xff0c;比如树的度&#xff0c;子树的高度&#xff0c;子树的的深度等。我们时不时的会产生这样的…

树的高度、深度、层的区别

“高度”这个概念&#xff0c;其实就是从下往上度量&#xff0c;比如我们要度量第10层楼的高度、第13层楼的高度&#xff0c;起点都是地面。所以&#xff0c;树这种数据结构的高度也是一样&#xff0c;从最底层开始计数&#xff0c;并且计数的起点是0。 “深度”这个概念在生活…

【数据结构】树的高度和深度

1.高度 结点的高度&#xff1a;从该节点向下分支的叶节点开始自底向上逐层累加。 对于高度的理解&#xff0c;就拿楼房来说&#xff0c;我们会从底层开始往上数&#xff0c;假如楼有6层&#xff0c;则我们会说&#xff0c;这个楼有6层楼那么高。所以高度就是以从下往上对比&…

树的高度和深度以及结点的高度和深度

–> 参考链接 <– 树的高度和深度 深度定义是从上往下的&#xff0c;高度定义是从下往上的。&#xff08;其实不用在意这个&#xff0c;反正树的深度高度怎么数都一样的&#xff09;。 有两种说法&#xff1a; 高度就是深度看层数&#xff1a; 如果根结点第0&#xff…

树的深度与广度优先遍历

树是前端工程师最经常打交道的一个数据结构&#xff0c;比如说html标签组成的dom树、树形控件等。 在js中没有树这个数据结构&#xff0c;但是可以用Object和Array来构建树&#xff1a; //val是当前的节点值&#xff0c;children是子节点 const tree {val: A,children: [{va…