vue lang_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。

4b6ebfcd289ff78eceb8ee9e0b7d51ca.png

i18n.js文件内容如下:

2ad5522f37fb5935461e4253e6469261.png

langs下index.js内容如下:

2bd21731622bf28532c42043270a06f4.png

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

8f223e942922d6e6c0b6b9974846bb0f.png

在main.js中导入语言包

2465e7d05a681add40b66e483b0cb0f4.png

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

9c4c5c265b4b0f99e8f5f55509cb05f6.png
5f91fe33e0a8e95dd2cc29e06236d393.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中配置,

44e2993a280cbbbd3c6d83cf78237ecf.png

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

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

view中我们用

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

或者

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

js中我们用

this.$t("logistics.search")

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

e0c5f5863872a9ac4e067492602ea734.png
86f36a7a94a5ecc50acc1bf7cd110e9a.png

显示效果

155730b7e75ab6b35ab214b8be880e27.png
2627b03fc35841727c32fe88b7acb4c1.png

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

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

8a013f0822effbdfa6812b462edf7b03.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文件夹,下面分模块

b17f66b309be2e261575720ba6bc8ef3.png

页面切换多语言

6cde7d7f139d284554384c151dfd8075.png
76d5ef30af8c6c63223065786c766286.png

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue3中使用Ant Design Vue的样式,可以按照以下步骤进行操作: 1. 首先,在你的项目中安装Ant Design Vue组件库。你可以通过npm或者yarn进行安装,具体的安装命令可以在Ant Design Vue的官方文档中找到。 2. 在你的Vue组件中引入Ant Design Vue的样式文件。你可以在组件所在的Vue文件中使用import语句引入Ant Design Vue的样式文件。 例如,在你的Vue文件中添加以下代码: ```javascript <style lang="less" scoped> @import '~ant-design-vue/dist/antd.less'; </style> ``` 这将会导入Ant Design Vue的样式文件,并使它只在当前组件中生效。 3. 接下来,你可以根据需要自定义你的组件样式。你可以在style标签中使用普通的CSS语法来定义和修改组件的样式。 例如,你可以在style标签中添加以下代码来自定义一个按钮组件的样式: ```javascript <style lang="less" scoped> .my-button { border-radius: 10px; } </style> ``` 这将会给按钮组件添加一个圆角为10px的边框样式。 通过以上步骤,你就可以在Vue3中使用Ant Design Vue的样式了。记得按照官方文档中的指引导入需要的组件,并在模板中使用它们。如果你需要更多示例和帮助,可以参考官方文档或者Ant Design Vue的开源项目。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3+ant design vue+ts实战【ant-design-vue组件库引入】](https://blog.csdn.net/XSL_HR/article/details/127396384)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue3+ant-design-vue按需加载组件](https://blog.csdn.net/qq_42263570/article/details/130143934)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vue3+element-plus的后台管理系统模板 和 vue3+ant-design-vue的后台管理系统模板](https://blog.csdn.net/qq_61233877/article/details/131008600)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值