v-on处理程序中的错误:“ ReferenceError:未定义i18n”

时间:2019-12-29 10:34:43

标签: javascript vue.js vuejs2 vue-component vue-i18n

我正在尝试使用Vue.js创建多语言站点,但是我不知道如何调用const i18n或如何引用它。我已经尝试过eventBus选项,但是我认为这不是正确的选择。我正在使用vue-router

Navbar.vue

<template>
    <a v-on:click="changeLocale">EN</a>
</template>
<script>
   export default {
        methods: {
            changeLocale: function() {
                console.log("es");
                i18n.locale = "es";
            }
        }
    };
</script>

main.js

import VueI18n from 'vue-i18n';
import VueRouter from 'vue-router';
import App from './App.vue';
import {routes} from './routes.js';
import {messages} from './i18n.js';

Vue.use(VueRouter);
Vue.use(VueI18n);

const router = new VueRouter({
    routes,
    mode: 'history'
});

const i18n = new VueI18n({
    locale: 'en',
    messages
});

new Vue({
    el: '#app',
    router,
    i18n,
    render: h => h(App)
});

App.vue

<template>
    <div>
        <navbar></navbar>
        <router-view></router-view>
        <footer-part></footer-part>
    </div>
</template>

<script>
    import Navbar from './components/site/Navbar.vue';
    import Footer from './components/site/Footer.vue';

    export default {
        components: {
            'navbar' : Navbar,
            'footer-part' : Footer
        }
    }
</script>

1 个答案:

答案 0 :(得分:3)

您应该使用$符号和this关键字作为前缀:

   this.$i18n.locale = "es";