I want to localize some of the messages and attributes name using vee-validation. I'm able to localize the messages only when using E.g: this.$validator.localize('en', { messages: { required: (field) => '* ' + field + required'}, attributes: { email: 'Email' }});
inside the "created()" function. But I would like to give this in the "main.js". Whenever I'm calling this in the main.js it's throwing error like:
"Uncaught TypeError: Cannot read property 'localize' of undefined"
My code in main.js. I have given this code in main.js because I would like to access through out my project in all vue files. Below is my code.
import Vue from 'vue'
import App from './App'
import router from './router'
import VeeValidate from 'vee-validate';
import { Validator } from 'vee-validate';
Vue.use(VeeValidate);
this.$validator.localize('en', {
messages: {
required: (field) => '* ' + field + ' is required'
},
attributes: {
email: 'Email'
}
});
new Vue({
el: '#app',
router,
template: '<App/>',
components: {
App
}
})
In your code example, this.$validator
is called in the middle of nowhere... you need to put it inside your Vue instance, in the mounted hook for example :
new Vue({
el: '#app',
router,
template: '<App/>',
components: {
App
},
mounted() {
this.$validator.localize('en', {
messages: {
required: (field) => '* ' + field + ' is required'
},
attributes: {
email: 'Email'
}
})
}
})
If we want to Change all Default Message include some attributes changes. Define you message and then mounted in main js file
const dict = {
messages: {
required: (field) => 'Please Enter ' + field + ''
},
attributes: {
name: 'Name',
email: 'Email Id '
}
}
const app = new Vue({
el: '#app',
router: router,
components: {
App
},
mounted() {
this.$validator.localize('en', dict);
}
});
// Make to change in single required message
const dict = {
custom: {
email: {
required: 'Please Enter Valid Email Id'
},
name: {
required: 'Name include first and last name'
}
}
}
const app = new Vue({
el: '#app',
router: router,
components: {
App
},
mounted() {
this.$validator.localize('en', dict);
}
});
来源:https://stackoverflow.com/questions/50148858/how-to-localize-error-messages-in-vuejs-using-vee-validation