localize error messages from vee-validate

This commit is contained in:
Moriz Wahl 2021-03-23 19:29:12 +01:00 committed by Ulf Gebhardt
parent 03ba88d7c7
commit e1488e834e
No known key found for this signature in database
GPG Key ID: 81308EFE29ABFEBD
4 changed files with 66 additions and 27 deletions

View File

@ -1,6 +1,9 @@
import Vue from 'vue' import Vue from 'vue'
import VueI18n from 'vue-i18n' import VueI18n from 'vue-i18n'
import en from 'vee-validate/dist/locale/en'
import de from 'vee-validate/dist/locale/de'
Vue.use(VueI18n) Vue.use(VueI18n)
function loadLocaleMessages () { function loadLocaleMessages () {
@ -11,6 +14,18 @@ function loadLocaleMessages () {
if (matched && matched.length > 1) { if (matched && matched.length > 1) {
const locale = matched[1] const locale = matched[1]
messages[locale] = locales(key) messages[locale] = locales(key)
if(locale === 'de') {
messages[locale] = {
validations: de,
...messages[locale]
}
}
if(locale === 'en') {
messages[locale] = {
validations: en,
...messages[locale]
}
}
} }
}) })
return messages return messages
@ -33,14 +48,9 @@ const numberFormats = {
} }
} }
export default new VueI18n({ export default new VueI18n({
locale: 'en', locale: 'en',
fallbackLocale: 'en', fallbackLocale: 'en',
messages: loadLocaleMessages(), messages: loadLocaleMessages(),
numberFormats numberFormats
}) })

View File

@ -88,8 +88,8 @@
"text" : "Page not found. Don't worry though, we have plenty of other pages to explore", "text" : "Page not found. Don't worry though, we have plenty of other pages to explore",
"back" : "Back to dashboard!" "back" : "Back to dashboard!"
} }
}, },
"admin": { "admin": {
"site": { "site": {
"overview": { "overview": {
"creation": "Creation", "creation": "Creation",
@ -98,7 +98,7 @@
"members" : "Members" "members" : "Members"
} }
} }
}, },
"nav": { "nav": {
"features": "Features" "features": "Features"
} }

View File

@ -2,6 +2,7 @@ import Vue from 'vue';
import DashboardPlugin from './plugins/dashboard-plugin'; import DashboardPlugin from './plugins/dashboard-plugin';
import App from './App.vue'; import App from './App.vue';
import i18n from './i18n.js'; import i18n from './i18n.js';
import VeeValidate from './vee-validate.js'
import VueCookies from 'vue-cookies'; import VueCookies from 'vue-cookies';
// store // store

View File

@ -0,0 +1,28 @@
import { configure, extend } from 'vee-validate'
import { required, email, min } from "vee-validate/dist/rules"
import i18n from './i18n'
configure({
defaultMessage: (field, values) => {
console.log('defaultMessage', field, value)
values._field_ = i18n.t(`fields.${field}`)
return i18n.t(`validations.messages.${values._rule_}`, values)
}
})
extend('email', {
...email,
message: (_, values) => i18n.t('validations.messages.email', values)
})
extend('required', {
...required,
message: (_, values) => i18n.t('validations.messages.required', values)
})
extend('min', {
...min,
message: (_, values) => i18n.t('validations.messages.min', values)
})