前言

目前有比较成熟的方案(vue-i18n)了解了下,并且实用了一下感觉对于我在使用的项目来说略显臃肿,功能比较多,所以压缩的会比较大,在移动端不太适合所以自己花一天时间撸了一个vue多语言插件,压缩后大小不超过2kb

使用方法

通过Vue.js公开方法install安装,参数 lang 为初始化默认语言,参数 messages 为初始语言库,也可以在组件中新增多语言,语言库格式参照其他开源的国际化项目

安装

github地址: smart-vue-i18n

yarn add smart-vue-i18n

初始化

// 插件方式引用
// messages 为语言库
import { messages } from '@/utils/i18n-message/open-account/apply/index.js'
import i18n from 'smart-vue-i18n' Vue.use(i18n, {
lang: 'zhCHT',
messages
})

语言库格式

// 语言库格式
import { zhCHS } from './zh-chs'
import { zhCHT } from './zh-cht' export const messages = {
//简体中文
zhCHS,
//繁体中文
zhCHT
} // './zh-chs'
export const zhCHS = {
personalInfo: '个人资料',
} // './zh-cht'
export const zhCHT = {
personalInfo: '個人資料',
}

组件内使用

直接在组件内定义i18n多语言源 然后可以在页面使用切换语言可以不用刷新页面 方法 this.$i18n.setLang('zhCHS')组件内js使用 this.$t('personalInfo')组件内html使用 $t('personalInfo')

<template lang="pug">
yx-container.apply-home
.apply-main(slot="main")
.personalInfo {{$t('personalInfo')}}
.apply-main-add-credit(@click="testHandler") {{$t('test.a')}}
</template> <script>
export default {
i18n: {
zhCHS: {
test: {
a: '简体'
}
},
zhCHT: {
test: {
a: '简体'
}
}
},
methods: {
testHandler() {
this.$i18n.setLang(this.$i18n.lang === 'zhCHS' ? 'zhCHT' : 'zhCHS')
console.log(this, this.$i18n.lang)
}
}
}
</script>

原理解析

核心代码

const _vm = new Vue({
data: options
})
Object.defineProperty(Vue.prototype.$i18n, 'lang', {
get() {
return _vm.lang
}
})

将多语言挂载到vue原型上

然后 Object.defineProperty 监听Vue.prototype.$i18n变化

通过new Vue() 创建实例来实现语言切换实时渲染,可以不需要刷新页面

其他

时间仓促,一些常用的功能暂时没有,后续加上

欢迎使用并提出意见

分享一个自己写的vue多语言插件smart-vue-i18n的更多相关文章

  1. 分享一个以前写的基于C#语言操作数据库的小框架

    一:前言 这个是以前写的操作MySQL数据库的小型框架,如果是中小型项目用起来也是很不错的,里面提供Filter.ModelPart.Relationship等机制实现操作数据库时的SQL语句的拼接和 ...

  2. 分享一个c#写的开源分布式消息队列equeue

    分享一个c#写的开源分布式消息队列equeue 前言 equeue消息队列中的专业术语 Topic Queue Producer Consumer Consumer Group Broker 集群消费 ...

  3. 分享一个自己写的MVC+EF “增删改查” 无刷新分页程序

    分享一个自己写的MVC+EF “增删改查” 无刷新分页程序 一.项目之前得添加几个组件artDialog.MVCPager.kindeditor-4.0.先上几个效果图.      1.首先建立一个数 ...

  4. vue中使用时间插件、vue使用laydate

    <input id="time1" readonly="readonly" placeholder="这里选择时间" v-model= ...

  5. 分享一个nodejs写的小论坛

    引言:作为一个前端小菜鸟,最近迷上了node,于是乎空闲时间,为了练练手写了一个node的小社区,关于微信小程序的,欢迎大家批评指导. 项目架构部分 一.前端架构 作为一个写样式也得无聊的前端狮,我偷 ...

  6. 分享一个jquery写的类似于百度的搜索框,(可动态配置,可单列或者table格式,可填充数据)

    需求:类似于百度的搜索框,可配置,可单列可table格式,可填充数据.页面可多次使用,简单,易用. 想法:使用jquery,css,ajax,前台调用,后台返回json数据. jquery代码: va ...

  7. 分享一个自己写的基于TP的关系模型

    为了说明问题,假设现在有表test1,test1有从表test2:test1属于test3,test1和test4多对多,关联表test1_test4. 1.定义关系 class Test1Model ...

  8. 分享一个自己写的基于JQuery的一个Web背景切换的Demo

    这个效果主要有两个特点: 1. 背景切换的渐变 2. 背景大小自适应 3. 背景自适应保持比例同时, 相对居中 js源码: (function ($) { $.fn.bgChange = functi ...

  9. 分享一个自搭的框架,使用Spring boot+Vue+Element UI

    废弃,新的:https://www.cnblogs.com/hackyo/p/10453243.html 特点:前后端分离,可遵循restful 框架:后端使用Spring boot,整合了aop.a ...

随机推荐

  1. 【BZOJ4059】Non-boring sequences

    Solution 记序列为\(a\),计算出与\(a_i\)相等的前一个元素的位置\(pre_i\),以及后一个元素的位置\(nex_i\),显然,对于那些左端点处于\((pre_i,i]\)以及右端 ...

  2. BZOJ2079 [Poi2010]Guilds 【贪心】

    题目链接 BZOJ2079 题解 题意就是黑白染色,要求相邻点存在不同颜色的点 显然从一个点出发,相邻点如果没有染色,染不同颜色,那么一个联通块一定会满足要求 证明:在\(dfs\)树上,每个点父亲和 ...

  3. java使用POI操作XWPFDocument中的XWPFRun(文本)对象的属性详解

    java使用POI操作XWPFDocument中的XWPFRun(文本)对象的属性详解 我用的是office word 2016版 XWPFRun是XWPFDocument中的一段文本对象(就是一段文 ...

  4. c++ 宏多态 动态多态和静态多态(转载)

    转载出处:通道 多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的情形.在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关 ...

  5. bzoj1874 [BeiJing2009 WinterCamp]取石子游戏

    1874: [BeiJing2009 WinterCamp]取石子游戏 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 925  Solved: 381[ ...

  6. vim文件头部注释配置

    http://note.youdao.com/noteshare?id=26dff538fabf3e8a0c4e85815256d5bb

  7. 用递归的方法求一个数组的前n项和

    用递归的方法求一个数组的前n项和 public class Demo1 { /* * 用递归的方法求一个数组的前n项和 */ public static void main(String[] args ...

  8. 彻底搞懂 SQLAlchemy中的 backref

    教程源码截取: class User(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True) name = Colum ...

  9. python中的关键字符

    from keyword import kwlistprint(kwlist)for i in kwlist: print(i) 可以显示所有的关键字符,开发者不要重新赋予其他值. a = 10000 ...

  10. svn服务器搭建(windows)

    转载:https://blog.csdn.net/daobantutu/article/details/60467185 本教程会从最基本的下载安装到上传代码,下载代码这条线来详细讲述如何完成SVN服 ...