Как локализовать сообщения об ошибках в vuejs, используя vee-validation - PullRequest
0 голосов
/ 03 мая 2018

Я хочу локализовать некоторые сообщения и имена атрибутов, используя vee-validation. Я могу локализовать сообщения только при использовании E.g: this.$validator.localize('en', { messages: { required: (field) => '* ' + field + required'}, attributes: { email: 'Email' }}); внутри функции «create ()». Но я хотел бы дать это в "main.js". Всякий раз, когда я вызываю это в main.js, он выдает ошибку вроде:

"Uncaught TypeError: Невозможно прочитать свойство 'localize' из неопределенного"

Мой код в main.js. Я дал этот код в main.js, потому что я хотел бы получить доступ через мой проект во всех файлах VUE. Ниже мой код.

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
  }
})

Ответы [ 2 ]

0 голосов
/ 31 июля 2019

Если мы хотим изменить все сообщения по умолчанию, включите некоторые атрибуты изменений. Определите ваше сообщение и затем смонтируйте его в основном файле js

         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);
        }
    });
0 голосов
/ 03 мая 2018

В вашем примере кода, this.$validator вызывается в глуши ... вам нужно поместить его в ваш экземпляр Vue, в смонтированный хук, например:

new Vue({
  el: '#app',
  router,
  template: '<App/>',
  components: {
    App
  },
  mounted() {
    this.$validator.localize('en', {
      messages: {
        required: (field) => '* ' + field + ' is required'
      },
      attributes: {
        email: 'Email'
      } 
    })
  }
})
...