Fiz tudo conforme descrito mas as mensagens continuam em inglês:
Cadastro.vue
<template>
<div>
<h1 class="centralizado">Cadastro</h1>
<h2 v-if ="foto._id" class="centralizado">Alterando</h2>
<h2 v-else class="centralizado">Incluindo</h2>
<form @submit.prevent="grava()">
<div class="controle">
<label for="titulo">TÍTULO</label>
<input v-validate data-vv-rules="required|min:3|max:30" name="titulo" data-vv-as="título" id="titulo" autocomplete="off" v-model="foto.titulo">
<span v-show="errors.has('titulo')">
{{ errors.first('titulo') }}
</span>
</div>
<div class="controle">
<label for="url">URL</label>
<input v-validate data-vv-rules="required" name="url" id="url" autocomplete="off" v-model.lazy="foto.url">
<span v-show="errors.has('url')">
{{ errors.first('url') }}
</span>
<imagem-responsiva v-show="foto.url" :url="foto.url" :titulo="foto.titulo"/>
</div>
<div class="controle">
<label for="descricao">DESCRIÇÃO</label>
<textarea id="descricao" autocomplete="off" v-model="foto.descricao"></textarea>
</div>
<div class="centralizado">
<meu-botao rotulo="GRAVAR" tipo="submit"/>
<router-link :to="{name: 'home'}"><meu-botao rotulo="VOLTAR" tipo="button"/></router-link>
</div>
</form>
</div>
</template>
<script>
import ImagemResponsiva from '../shared/imagem-responsiva/ImagemResponsiva.vue'
import Botao from '../shared/botao/Botao.vue';
import Foto from '../../domain/foto/Foto';
import FotoService from '../../domain/foto/FotoService';
export default {
components: {
'imagem-responsiva': ImagemResponsiva,
'meu-botao': Botao
},
data(){
return{
foto: new Foto(),
id: this.$route.params.id
}
},
methods:{
grava(){
this.$validator
.validateAll()
.then(sucess => {
if(sucess) {
this.service
.cadastra(this.foto)
.then(() => {
if(this.id) this.$router.push({name:'home'});
this.foto = new Foto();
}, err => console.log(err));
}
})
}
},
created() {
this.service = new FotoService(this.$resource);
if(this.id) {
this.service
.busca(this.id)
.then(foto => this.foto = foto);
}
}
}
</script>
<style scoped>
.centralizado {
text-align: center;
}
.controle {
font-size: 1.2em;
margin-bottom: 20px;
}
.controle label {
display: block;
font-weight: bold;
}
.controle label + input, .controle textarea {
width: 100%;
font-size: inherit;
border-radius: 5px
}
.centralizado {
text-align: center;
}
</style>
main.js:
import Vue from 'vue'
import App from './App.vue'
import VueResource from 'vue-resource';
import VueRouter from 'vue-router';
import {
routes
} from './routes';
import './directives/Transform';
import VeeValidate from 'vee-validate';
import msg from './pt_BR';
Vue.use(VueResource);
Vue.http.options.root = 'http://localhost:3000';
Vue.use(VueRouter);
Vue.use(VeeValidate, {
locale: 'pt_BR',
dictionary: {
pt_BR: {
messages: msg
}
}
});
const router = new VueRouter({
routes
});
new Vue({
el: '#app',
router,
render: h => h(App)
})
o arquivo pt_BR está dentro da pasta src