Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema de tradução

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

1 resposta
solução!

solução encontrada nesse tópico

https://cursos.alura.com.br/forum/topico-traducao-nao-e-feita-35683