美文网首页VUE
Vue-使用i18n实现中英文切换功能,表单验证,组件数据等

Vue-使用i18n实现中英文切换功能,表单验证,组件数据等

作者: Renaissance_ | 来源:发表于2019-07-22 17:04 被阅读15次

中英文切换功能,笔者是通过i8n实现的。本文讲述了各个场景下的中英文如何替换,包括表单验证,提示信息,各中组件等。

  • 安装i18n

// 通过淘宝镜像安装
cnpm install vue-i18n --save

  • 引入i18n

目录结构
  1. 在src目录下创建i18n文件夹,新增i18n.js
import Vue from 'vue'
import locale from 'element-ui/lib/locale';
import VueI18n from 'vue-i18n'
//import messages from './langs'

//自定义中英文包
import zh from './langs/zh'
import en from './langs/en'

//element 中英文包
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
Vue.use(VueI18n)

const messages = {
  en: Object.assign(en, enLocale),
  zh: Object.assign(zh, zhLocale)
}
//从localStorage中拿到用户的语言选择,如果没有,那默认中文。
/*const i18n = new VueI18n({
    locale: localStorage.lang || 'zh',
    messages,
})*/
const i18n = new VueI18n({
  locale: localStorage.getItem('locale') || 'zh',
  messages
})
locale.i18n((key, value) => i18n.t(key, value)) //为了实现element插件的多语言切换
console.log('%c当前缓存语言是:'+(localStorage.getItem('locale')=='en'?'English':'中文')+'','color:#fff;background:green;padding:4px;border-radius:5px');
export default i18n

  1. 在i18n文件夹下创建lang语言包,并创建zh.js和en.js

zh.js

const cn = {
  //菜单名字
  menuName:{
    //首页
    home: '首页',
    product1: '产品1',
    product2: '产品2',
    contact: '联系我们',
    signin: '登陆',
    signup: '注册',
  }
}

export default cn;

en.js

const en = {
  //菜单名字
  menuName:{
    //首页
    home: 'home',
    product1: 'product1',
    product2: 'product2',
    contact: 'contact',
    signin: 'signin',
    signup: 'signup',
  }
}

export default en;
  1. 在main.js中引入i18n
//中英文切换
import i18n from './i18n/i18n'


new Vue({
  el: '#app',
  router,
  i18n,
  store,
  components: { App },
  template: '<App/>'
})
  • 实现中英文切换

  1. 在组件中定义切换事件,用户点击了切换按钮后,将localStorage存储的当前语言更新。
  //切换语言
  toggleLang(lang) {
    // loading遮罩
    const loading = this.$loading({
      lock: true,
      text: this.$t("element.loadingText"),
      spinner: 'el-icon-loading',
      background: 'rgba(0, 0, 0, 0.7)'
    });
    setTimeout(function(){
      loading.close();
    },600)
    if(lang == 'zh') {//中文
      localStorage.setItem('locale', 'zh')
      this.$i18n.locale = localStorage.getItem('locale')
    } else if(lang == 'en') {//英文
      localStorage.setItem('locale', 'en')
      this.$i18n.locale = localStorage.getItem('locale')
    }
  }
  • 实现效果

实现效果
  • 表单验证

有时候在表单验证的提示信息中,也要实现中英文切换,如果直接在rules数据定义时使用$t()数据,在中英文切换后,不会实时更新。此时就是要监控当前语言是否变化,如果变化了,重新赋值表单验证数据。

  1. 定义setFormRules方法
 //设置表单校验
  setFormRules: function(){
    this.rules = {
      email: [
        {required: true, message: this.$t('userForm.emailRule'), trigger: 'blur'},
        {type: 'email', message: this.$t('userForm.emailCheckRule') , trigger: 'blur'},
        {min: 3, max: 50, message: this.$t('userForm.emailCheckRule'), trigger: 'blur'}
      ],
      password: [
        {required: true, message: this.$t('userForm.passwordRule'), trigger: 'blur'},
      ],
      vrifyCode: [
        {required: true, message: this.$t('signInRules.vrifyCodeRule') , trigger: 'blur,change'},
        {min: 4, max: 4, message: this.$t('signInRules.vrifyCodeCheckRule'), trigger: 'blur'}
      ],
    }
  }
  1. 组件mounted时调用setFormRules方法
 mounted: function(){
          this.setFormRules();
        }
  1. 语言切换后调用setFormRules方法
 watch: {
          //监听语言切换
          '$i18n.locale' : function () {
            this.setFormRules();
          },
        }
  1. 其它的数据类似
  • 总结

本文总结了实现中英文切换基本步骤,以及实现表单验证提示信息的动态切换。基本可以满足大部分场景的使用。

相关文章

  • Vue-使用i18n实现中英文切换功能,表单验证,组件数据等

    中英文切换功能,笔者是通过i8n实现的。本文讲述了各个场景下的中英文如何替换,包括表单验证,提示信息,各中组件等。...

  • iview form表单数值类型校验「iview自定义form表

    摘录iview表单验证 Form 组件基于 sync-validator 实现的数据验证,给 Form 设置属性 ...

  • Grails国际化实例

    Grails实现国际化(中英文切换) 在grails-app/i18n分别配置英文(messages.proper...

  • ruby基础功能-数据验证

    数据验证 验证表单提供的数据是否符合要求使用rails自带的内置辅助功能ActiveRecord Validati...

  • 第二十五谈:验证表单

    本节课我们来开始学习 Bootstrap 的提供验证表单组件样式功能。 一.验证表单 表单需要在提交前验证,如果出...

  • React 的几个注意点

    受控组件和无状态组件 非受控组件推荐使用受控组件来实现表单. 在受控组件中, 表单数据是有React组件处理如果让...

  • React进阶笔记4(非受控组件)

    在大多数情况下,我们推荐使用 受控组件 来实现表单。在受控组件中,表单的数据通过React数据来处理,如果让表单数...

  • Django学习笔记--Forms组件

    Forms组件的使用 在html表单验证中,需要通过各种信息的验证,比如注册界面的姓名、密码、邮箱、电话等的验证,...

  • jquery 使用i8n 的坑点

    最近公司的官网需要做国际化,提出的需求是要实现中英文切换,所以我选择i18n 这个插件 1、先下载i18n 插件 ...

  • 表单验证

    自动验证:通过对元素使用属性(如pattern)的方法,可以实现在表单提交时执行的自动验证功能。 取消验证: ①利...

网友评论

    本文标题:Vue-使用i18n实现中英文切换功能,表单验证,组件数据等

    本文链接:https://www.haomeiwen.com/subject/bywwlctx.html