我使用 electron.js
构建桌面应用程序+ vue.js
和插件 vue-electron
, electron-window-manager
。
现在我需要放置 vue-i18n ,它的结构以非默认方式工作......
例如。 mainwindow
就像工具栏或主菜单。其他菜单(窗口)由主菜单打开,通过这种技术组合,vue-i18n
不能正常工作。
这是一个仓库: anderzilla/vue-electron !
我尝试过类似的解决方案 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 代码中,它就像 tuto 的 kazupon
在模板中(由 electro-window-manager 创建的其他窗口)
<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 应用程序。
最佳答案
我修好了!问题在于声明组件的顺序。
new Vue({
components: { App },
i18n,
router,
store,
template: "<App/>"
}).$mount("#app");
i18n 必须在路由器之前!
关于vue.js - vue-i18n 与 vue- Electron : TypeError: Cannot read property '_t' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57911651/