如何将 VeeValidate 与 vue-i18n 集成?

Ale*_*ter 5 javascript vue.js vuejs2 vue-i18n vee-validate

通过单击事件,我更改了 vue-i18n 语言,我想将 vee-validate 字典更改为相同的语言

主文件

import VeeValidate from 'vee-validate'
import validations from './validations.js'
import i18n from './lang'
Vue.use(VeeValidate)
new Vue({
   router,
   store,
   i18n,
   render: h => h(App)
}).$mount('#app')
Run Code Online (Sandbox Code Playgroud)

vue-i18n 文件夹 > lang/index.js

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import en from './locals/en'
import es from './locals/es'

Vue.use(VueI18n)

export default new VueI18n({
  locale: 'en',
  messages: {
    en: {
      lang: en
    },
    es: {
      lang: es
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

vee-validate 文件夹 > src/validations.js

import {Validator} from 'vee-validate'
const dictionary = {
    en: {
        custom: {
            signupEmail: {
                required: 'Error',
            },
              
        }
    },
    es: {
        custom: {
            signupEmail: {
                required: 'Hubo un error',
            },
              
        }
    }    
}
Validator.localize(dictionary)
const validator = new Validator()
validator.localize('en')
export default Validator
Run Code Online (Sandbox Code Playgroud)

我试图定位 validator.localize('en') 并且我无法更改为 es 字典,即使我手动更改它也是 validator.localize('es')。我缺少什么?

Ale*_*ter -1

我自己想出了如何去做。

在App.vue里面设置mounted的cycle hook

VeeValidate.Validator.locale = `${language}`
Run Code Online (Sandbox Code Playgroud)