我认为,有关i18n与vee-validate集成的文档不完整。如果我将i18n与vee-validate结合使用,我仍然不知道如何翻译字段名称。

这是我的main.js:

import ruValidation from 'vee-validate/dist/locale/ru'
import enValidation from 'vee-validate/dist/locale/en'

Vue.use(VeeValidate, {
  i18nRootKey: 'validations',
  i18n,
  dictionary: {
    en: enValidation,
    ru: ruValidation
  },
  errorBagName: 'vErrors',
  events: ''
})


但问题是-我该如何转换属性?我试过了:

import attributesRU from './locales/veevalidate/ru/attributes'

  dictionary: {
    en: enValidation,
    ru: { message: ruValidation, attributes: attributesRU }
  },


attribute.js的内容:

export const attributes = {
  mail: 'Эл.почта'
}


输入:

<input type="text" name="mail" v-validate="'required|email'">


但是,如果我添加以下内容,即使没有消息也无法翻译,但没有成功:

ru: { message: ruValidation, attributes: attributesRU }


代替:

ru: ruValidation

最佳答案

您可以像这样制作字典

const dictionary = {
  en: {
    messages: {
      required: (field, val) => `Field ${field} is required`
    }
  },
  ru: {
    messages: {
      required: (field, val) => `поле ${field} обязательно`
    }
  },
};

export default dictionary;


您必须将其导入到组件中,然后添加到验证器库中,如下所示

this.$validator.localize(dictionary);


希望这能解决您的问题。

关于javascript - 如何使用vee-validate和vue-i18n转换字段名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53928123/

10-09 20:57