Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将VeeValidate与vue-i18n集成?_Javascript_Vue.js_Vuejs2_Vee Validate_Vue I18n - Fatal编程技术网

Javascript 如何将VeeValidate与vue-i18n集成?

Javascript 如何将VeeValidate与vue-i18n集成?,javascript,vue.js,vuejs2,vee-validate,vue-i18n,Javascript,Vue.js,Vuejs2,Vee Validate,Vue I18n,通过单击事件,我更改了vue-i18n语言,我想将vee validate dictionary更改为相同的语言 main.js import VeeValidate from 'vee-validate' import validations from './validations.js' import i18n from './lang' Vue.use(VeeValidate) new Vue({ router, store, i18n, render: h =&g

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

main.js

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')
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
    }
  }
})
vee validate folder>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

我试图以validator.localize('en')为目标,我无法更改到es字典,即使我手动更改它validator.localize('es')。我遗漏了什么?

看起来你很接近,但遗漏了几个关键部分

连接VeeValidate时,您可以这样:

Vue.use(VeeValidate, {
   i18nRootKey: 'custom', // customize the root path for validation messages.
   i18n,
   dictionary: {
    en: {
    custom: {
        signupEmail: {
            required: 'Error',
        },        
      }
    },
    es: {
    custom: {
        signupEmail: {
            required: 'Hubo un error',
        },    
       }
     }
   }
});

显然,我只是把你的字典放在这里内联,最好将它作为一个单独的文件保存并以这种方式导入。

我自己想出了方法

在安装的自行车挂钩内的App.vue设置中

VeeValidate.Validator.locale = `${language}`

嗨@maxshuty我想我还是遗漏了一些东西,这就是我对你的代码所做的,1。commentvalidations.js2。将代码添加到main.js 3。改变语言,仍然只获得english@AlexHunter你确定你的语言确实触发了你认为是的改变吗?当然,事实上我在使用moment.js和vue-i18n的同时改变了语言,但我无法使用VeeValidate。你在i18n加载到vue实例之前加载VeeValidate吗?谢谢。有点像:)