Не удается получить доступ к плагину i18 из мутации в магазине классического режима в приложении Nuxt - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь реализовать пакет Vuex i18n в моем приложении Nuxt.В моем файле nuxt.conf.js в массиве плагинов у меня есть:

{
    src: '@/plugins/i18n.js',
    ssr: false
},

plugins / i18n.js файл:

import Vue from "vue";
import vuexI18n from "vuex-i18n/dist/vuex-i18n.umd.js";
import toEnglish from "../translations/toEnglish";
import toSpanish from "./../translations/toSpanish";
import toGerman from "./../translations/toGerman";

export default ({ store }) => {
    Vue.use(
        vuexI18n.plugin,
        store,
        {
            onTranslationNotFound: function (locale, key) {
                console.warn(`vuex-i18n :: Key '${key}' not found for locale '${locale}'`)
            }
        }
    );

    // register the locales
    Vue.i18n.add('en', toEnglish);
    Vue.i18n.add('de', toGerman);
    Vue.i18n.add('es', toSpanish);

    // Set the start locale to use
    Vue.i18n.set('de');
    Vue.i18n.fallback('en');
}

Последняя вещь - мой магазин.Я использую классический режим магазина vuex в Nuxt:

import Vuex from "vuex";

const store = () => {
    return new Vuex.Store({
        state: () => ({
            currentLanguage: ''
        }),
        mutations: {
            changeLang(state, response) {
                if (response) {
                    console.log(this);
                    state.currentLanguage = response;
                    this.i18n.set(response);
                }
            }
        }
    })
};


export default store;

Как вы можете видеть в файле магазина в мутации, я пытаюсь получить доступ к плагину i18n с ключевым словом this.К сожалению, при печати ошибка в консоли:

Ошибка типа: невозможно прочитать «набор» свойств неопределенного

this, который я утешал также внутри мутации:

Not able to access i18 plugin from mutation in classic mode store in nuxt application

1 Ответ

0 голосов
/ 07 февраля 2019

Я изменил this.i18n.set(response); на state.i18n.locale = response; внутри своей мутации, и теперь она кажется работающей.

По какой-то причине, когда я вызываю эту мутацию, мой проигрыватель video.js обновляется.Я постараюсь выяснить, почему.

...