Vue中vue-i18n结合vant-ui实现国际化
2023-09-14 09:08:23 时间
(一)添加依赖模块
在package.json文件中添加vant模块的依赖,如:
// package.json { "dependencies": { "vant": "^2.1.6" } }
(二)配置语言资源文件
1、目录结构如下:
本测试工程的代码目录是这样的:在src文件夹中创建一个lang文件夹,在lang文件夹中分别创建index.js文件、zh_cn.js文件和en_us.js文件。
2、zh_cn.js和en_us.js资源文件示例
// zh_cn.js文件 export default { app: { hello: '你好,世界!' } } // en_us.js文件 export default { app: { hello: 'Hello,World!' } }
3、index.js文件内容
import Vue from 'vue' import VueI18n from 'vue-i18n' import {Locale} from 'vant' import enUS from 'vant/lib/locale/lang/en-US' import zhCN from 'vant/lib/locale/lang/zh-CN' import enLocale from './en_us' import zhLocale from './zh_cn' Vue.use(VueI18n) const messages = { en: { ...enUS, ...enLocale }, zh: { ...zhCN, ...zhLocale } } const i18n = new VueI18n({ locale: 'zh', // 设置默认语言 messages: messages // 设置资源文件对象 }) // 更新vant组件库本身的语言变化,支持国际化 function vantLocales (lang) { if (lang === 'en') { Locale.use(lang, enUS) } else if (lang === 'zh') { Locale.use(lang, zhCN) } } export {i18n, vantLocales}
(三)应用国际化流程
在main.js文件中进行引用,如:
// 导入资源文件 import {i18n, vantLocales} from './lang' console.log('当前的语言是:', i18n.locale) // vant-ui组件国际化 vantLocales(i18n.locale)
(四)资源文件的具体使用方式
1、在Vue文件的template标签中使用方式
<template> <div> <van-nav-bar :title="this.$t('app.hello')" @click-left="show=true"> <van-icon name="search" slot="left" /> </van-nav-bar> </template>
或者
<template> <div> <van-nav-bar :title="$t('app.hello')" @click-left="show=true"> <van-icon name="search" slot="left" /> </van-nav-bar> </template>
效果如下:
、
2、在Vue文件的script标签中使用方式
created () { console.log('start to enter created ', this.$t('app.hello')) }
效果如下:
、
3、在JS文件中使用方式
在main.js文件使用示例,如下:
console.log('main.js文件温馨提示:', i18n.messages[i18n.locale].app.hello)
效果如下:
、
(五)vant-ui组件库国际化过程
界面上自身的语言词条,可以通过i18n来实现,若是vant-ui自身组件库呢?又该如何国际化?其实,也很简单,只要语言发生了变化,调用一个lang/index.js文件中的vantLocales()函数即可,例如下面两种示例:
1、zh语言及其效果
vantLocales('zh')
2、en语言及其效果
vantLocales('en')
其中,被红色框圈住的就是vant-ui组件库自身的语言,目前已实现了其国际化流程。
相关文章
- Vue element-ui 限制时间范围选择
- This dependency was not found: * !!vue-style-loader!css-loader?……解决方案
- [Vue @Component] Load Vue Async Components
- vue.js3:用exif-js读取图片的exif信息(vue@3.2.36)
- 从安装node js到构建一个vue并启动它
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器前端源码重构(三)- webpack + vue + AdminLTE 多页面引入 element-ui
- 高性能流媒体服务器EasyDSS前端重构(三)- webpack + vue + AdminLTE 多页面引入 element-ui
- vue.js 3.2.22:平滑回到顶部
- vue项目目录结构
- vue 请求报错 Network Error ,没有其他报错信息-解决
- Vue学习之--------el与data的两种写法、MVVM模型、数据代理(2022/7/5)
- Vue+Element UI
- 如何在浏览器中安装使用Vue开发者工具?Vue开发者工具的安装使用?可直接提取插件安装使用
- 前端MVC Vue2学习总结(八)——Vue Router路由、Vuex状态管理、Element-UI
- 130:vue+openlayers 加载中国边界JSON数据(EPSG:4326)
- 谈谈Vue项目打包的方式
- vue+element ui+腾讯云开发打造会员管理系统之实战教程(五)会员管理
- 【Vue】Vue packages version mismatch 报错解决方法
- 仓库管理系统-前后端分离项目(SpringBoot+Vue)
- vue实战之前期准备
- 2023前端面试重点知识点总结【详细】css+js+vue+react+小程序+性能优化等等