vue-i18n с vue-electronics: TypeError: невозможно прочитать свойство _t из undefined

Я создаю приложение для рабочего стола, используя electronic.js + vue.js и плагины vue-electronics, electronic-window-manager. Теперь мне нужно поставить vue-i18n, и его структура работает не по умолчанию ...

бывший. главное окно похоже на панель инструментов или главное меню. Другие меню (окна) открываются из главного меню, и при такой комбинации технологий vue-i18n не работает нормально.

это репо: anderzilla / vue-electronic!

Я пробовал такие решения, как vue-i18n tutorial kazupon! но сообщение об ошибке:

[Vue warn]: Error in render: "TypeError: Cannot read property '_t' of undefined"

found in

---> <MenuConfig> at src/renderer/components/MenuConfig.vue
       <Clarity> at src/renderer/App.vue
         <Root>

и мой i18n.js

import Vue from 'vue';
import VueI18n from 'vue-i18n';

Vue.use(VueI18n);

const messages = {
    'pt' : {
        alterarsenha: 'Alterar Senha',
        grupos: 'Grupos',
        pausas: 'Pausas',
        disponivel: 'Disponibilidade',
        sair: 'Sair',
    },
    'en' : {
        alterarsenha: 'Change Password',
        grupos: 'Groups',
        pausas: 'Pauses',
        disponivel: 'Disponibility',
        sair: 'Logout',
    },
    'es' : {}
};

const i18n = new VueI18n({    
    locale: 'pt', // set locale    
    fallbackLocale: 'en', // set fallback locale    
    messages, // set locale messages
});

В коде main.js это как kazupon tuto

В шаблоне (другое окно, созданное электронным оконным менеджером)

<template>
  <main id="menu-config">
    <v-row>
      <div class="col-md-4" id="menu-config">
        <div class="menu-config">
          <ul @mouseleave="close">
            <li>
             <button @click="alterarSenha" class="titulo" >{{ $t('alterarsenha') }} - Alterar Senha</button>
            </li>

"$ t" - это проблема ...

Мне это нужно только для приложения i18n.


person AnderZilla    schedule 12.09.2019    source источник


Ответы (1)


Я чиню это! Проблема в порядке объявления компонентов.

new Vue({ 
components: { App }, 
i18n, 
router, 
store, 
template: "<App/>" 
}).$mount("#app"); 

i18n должен быть перед роутером!

person AnderZilla    schedule 17.09.2019