Как перенести стоимость из Vuex Store в i18n.js? - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь сохранить выбранный язык при перезапуске программы.

Как сохранить значение locale: '' в i18n при переключении языков?

Я хочу перенести это значение из VUEX Store в i18n, но я не знаю, как это сделать правильно.

По умолчанию local: 'en'. При изменении языка значение в локали перезаписывается и сохраняется в localStorage , а при перезапуске программы значение на этапе create () берется из LocalStorage .

Может быть, существует хотя бы пример, где реализована похожая функция?

<template>
...
             <f7-menu-dropdown-item href="#" @click="setLocale('en')">
             <f7-menu-dropdown-item href="#" @click="setLocale('ru')">    
...
</template>

export default {
methods: {
    setLocale(locale){
      import(`../langs/${locale}.json`).then((msgs) => {
        this.$i18n.setLocaleMessage(locale, msgs)
        this.$i18n.locale = locale
        localStorage.setItem('language', locale);
  })
},
        created(){
      if(localStorage.getItem('language') !== null){
         localStorage.setItem('language', navigator.language || navigator.userLanguage);
       }

}
}
}

i18n.js

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import en from '../langs/en.json'
import ru from '../langs/ru.json'
Vue.use(VueI18n)

export const i18n = new VueI18n({
    locale: window.localStorage.getItem("language"),
    fallbackLocale: 'ru',
    messages:{
        en,
        ru
    }
})
...