Ant-design-vue+vue-i18n实现前端国际化

简介: Ant-design-vue+vue-i18n实现前端国际化

项目基于Vue-cli3.x进行开发,使用了ant-design-vue框架,然后需要做国际化。此时做国际化需要考虑两方面的国际化,一是ant-design-vue内部组件的国际化,二是国际化我们的业务显示,业务显示我们选用vue-i18n进行国际化。

安装vue-i18n

yarn add vue-i18n

复制

在public文件夹下新建languages文件夹,在新建langs文件夹和i18n.js,langs文件夹下新建index.js、cn.js、en.js。

image.png

i18n.js文件内容如下:

image.png

langs下index.js内容如下:

image.png

langs下cn.js内容如下(en.js文件和cn格式一样):

image.png

在main.js中导入语言包

image.png

比较基础的配置我们已经配置好了,接下来我们写切换多语言功能,在src下的app.vue文件中引入多语言文件和我们写切换的方法:

image.png

image.png

created内容如下:

created() {
// 默认中文
localStorage.lang == undefined ? localStorage.setItem("lang", "cn") : "";
// 自己配置多语言适配
this.$root.Bus.$on("switchLanguage", value => {
let router_path = this.$route.path;
switch (value) {
case "cn":
localStorage.setItem("lang", "cn");
break;
case "en":
localStorage.setItem("lang", "en");
break;
}
// 刷新页面
this.isRouterAlive = false; //先关闭,
this.$nextTick(function() {
this.isRouterAlive = true; //再打开
});
// 系统组件适配
let lang = localStorage.lang;
if (lang == "cn") {
this.locale = cn;
moment.locale("cn");
} else if (lang == "en") {
this.locale = en;
moment.locale("en");
}
});
},

复制

上面这个方法可以简单理解就是我们在这里定义了一个方法,在别的组件我们只要调用这个方法就可以切换多语言。调用方法如下:

this.$root.Bus.$emit("switchLanguage", "cn/en");

复制

解释下this.$root.Bus.$on(),这个是组件传值的一种方式,需要在main.js中配置,

image.png

moment.locale("cn");这个是ant-design-vue内部组件的国际化切换方法。

页面适配多语言分为view中使用和js中

view中我们用

:label="$t('logistics.search')"

复制

或者

{{$t('logistics.search')}}

复制

js中我们用

this.$t("logistics.search")

复制

简单测试下切换多语言,在login.vue(你可以是任意组件中)写调用方法

image.png

显示效果

image.png

网络异常,图片无法展示
|

多语言适配完成,但是,如果我们系统文字多,那一个文件会很大,加载很慢,对用户不友好,那我们优化下,一个vue组件我们对一个json多语言文件,按需加载

这里我们用到了vue的mixin,src下新建mixins文件夹,新建一个utils.js文件,内容格式如下:

image.png

/**
* 引入语言包
* @param path
*/
importFontpack(path) {
let _nowMsg = require('@/languages/' + path + localStorage.lang + '.json');
this.$i18n.mergeLocaleMessage(localStorage.lang, _nowMsg);
this.$i18n.locale = localStorage.lang
},

复制

src下新建languages文件夹,下面分模块

image.png

页面切换多语言

image.png

这样就完成了Ant-design-vue + vue-i18n实现前端国际化。

相关文章
|
1月前
|
存储 JavaScript 前端开发
前端技术分享:使用Vue.js与Vuex管理状态
【10月更文挑战第1天】前端技术分享:使用Vue.js与Vuex管理状态
44 6
|
29天前
|
JavaScript 前端开发 API
Vue.js:现代前端开发的强大框架
【10月更文挑战第11天】Vue.js:现代前端开发的强大框架
64 41
|
15天前
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】React与Vue:前端框架的巅峰对决与选择策略
|
15天前
|
前端开发 JavaScript 数据管理
React与Vue:两大前端框架的较量与选择策略
【10月更文挑战第23天】React与Vue:两大前端框架的较量与选择策略
|
20天前
|
JavaScript 前端开发 算法
前端优化之超大数组更新:深入分析Vue/React/Svelte的更新渲染策略
本文对比了 Vue、React 和 Svelte 在数组渲染方面的实现方式和优缺点,探讨了它们与直接操作 DOM 的差异及 Web Components 的实现方式。Vue 通过响应式系统自动管理数据变化,React 利用虚拟 DOM 和 `diffing` 算法优化更新,Svelte 通过编译时优化提升性能。文章还介绍了数组更新的优化策略,如使用 `key`、分片渲染、虚拟滚动等,帮助开发者在处理大型数组时提升性能。总结指出,选择合适的框架应根据项目复杂度和性能需求来决定。
|
27天前
|
前端开发 JavaScript 安全
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
71 4
|
1月前
|
JavaScript 前端开发 API
Vue.js:打造高效前端应用的最佳选择
【10月更文挑战第9天】Vue.js:打造高效前端应用的最佳选择
17 2
|
1月前
|
JavaScript 前端开发 Python
django接收前端vue传输的formData图片数据
django接收前端vue传输的formData图片数据
32 4
|
1月前
|
JavaScript 前端开发 Java
VUE学习四:前端模块化,ES6和ES5如何实现模块化
这篇文章介绍了前端模块化的概念,以及如何在ES6和ES5中实现模块化,包括ES6模块化的基本用法、默认导出与混合导出、重命名export和import,以及ES6之前如何通过函数闭包和CommonJS规范实现模块化。
69 0
VUE学习四:前端模块化,ES6和ES5如何实现模块化
|
1月前
|
JavaScript 前端开发 API
前端技术分享:Vue.js 动态路由与守卫
【10月更文挑战第1天】前端技术分享:Vue.js 动态路由与守卫