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

(切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包

最近项目有多语言设置
h5使用的是vantUI,vant的组件方法挺好的 可以自定义组件文字显示,
但是!一旦有些自定义不注意的,还是会显示中文
所以就使用国际化,统一更改一下吧

而且由于i18n.js只会加载一次,所以vant的组件文字不会及时更新(与elementUI不同,elementUI国际化点这里)

1.i18n.js文件
  • getLang是获取到缓存的值,,可以设置为store的值,只要能判别语言就可以,
  • ||‘zh’预设没有获取到语言,给个默认的
  • 将切换vant的方法进行封装使用(确保能及时更新vant文字显示和新增语种
import Vue from 'vue'
import VueI18n from "vue-i18n";
import {changeLang} from '@/utils/methods'

Vue.use(VueI18n)
import {getLang} from "../common/cookies";

changeLang(getLang()||'zh')
const i18n = new VueI18n({
  locale: getLang() || 'zh', // 语言标识
  messages: {
    'en': require('@/locales/en.json'),
    'zh': require('@/locales/zh.json'),

  }
})
export default i18n

main.js文件
  • vant我个人是按需引入,方式应该差别不大
import i18n from '@/plugins/i18n.js'
const app=new Vue({
  el: '#app',
  router,
  i18n,
  store,
  render: h => h(App)
})
封装切换的方法
  • …/locales/nl是自己拿vant的中文翻译文件进行翻译后的,也就是要新增nl这个语种,路径 :vant/lib/locale/lang/zh-CN
  • 新增语种需要设定 语种名:语种文件
  • 然后添加到vant语言里(这点真棒)
  • 在更改语言后进行使用该方法即可
import ens from 'vant/lib/locale/lang/en-US'
import nls from '../locales/nl'
import zhs from 'vant/lib/locale/lang/zh-CN'
import { Locale } from 'vant'

//进行更改语言后 更新vant组件语言
export const changeLang=(val)=>{
  let loc={
    en:"en-US",
    nl:"nl-NL",
    zh:"zh-CN",

  }
  let locs={
    en:ens,
    nl:nls,
    zh:zhs,
  }

  let messages={
    'nl-NL': nls
  }
  Locale.add(messages)

  console.log('获取的值:'+val)
  Locale.use(loc[val||'zh'],locs[val||'zh'])
}

相关文章:

  • 基于界面交互展开的用例设计思路
  • 实例分享:低投资也可实现的企业信息化综合运维管理
  • python进阶系列 - 11 python随机数
  • 数据库2-mysql环境搭建
  • Postman中的Pre-request Scrip详解
  • 知识变现海哥:如何把知识卖的更贵、更多、更酷
  • 中小商业银行主动安全纵深防御体系解决方案
  • 【HTML】表格标签,语义化
  • 如何从零开始解读什么叫产品经理
  • 基于竞争学习的粒子群优化算法-附代码
  • 猿创征文|忘记背后,努力面前【开学季flag】
  • 使用bloodyAD对域属性进行查询与修改
  • python——装饰器深入研究(二)
  • 前端面试谈:简历通用注意事项
  • Inveigh结合DNS v6配合NTLM Relay 的利用
  • 07.Android之多媒体问题
  • Android 控件背景颜色处理
  • Bootstrap JS插件Alert源码分析
  • css属性的继承、初识值、计算值、当前值、应用值
  • dva中组件的懒加载
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • leetcode-27. Remove Element
  • MySQL主从复制读写分离及奇怪的问题
  • session共享问题解决方案
  • 程序员最讨厌的9句话,你可有补充?
  • 关于字符编码你应该知道的事情
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 将回调地狱按在地上摩擦的Promise
  • 讲清楚之javascript作用域
  • 试着探索高并发下的系统架构面貌
  • 详解移动APP与web APP的区别
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 选择阿里云数据库HBase版十大理由
  • ​低代码平台的核心价值与优势
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • (1)(1.13) SiK无线电高级配置(五)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十六)Flask之蓝图
  • (四)Controller接口控制器详解(三)
  • (转)jdk与jre的区别
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [IOI2018] werewolf 狼人