如何在不重新加载vue.js中的页面的情况下翻译应用程序?

时间:2019-03-26 15:46:25

标签: vue.js vuejs2 vue-component vuex vue-router

我想将我的应用英语翻译成德语。 在语言更改事件中,我编写了这段代码

changeLocale (locale) {
      i18n.locale = locale.language
      VueCookies.set('UserLanguage', locale.language)
      // window.location.reload() this one is reloading page 
      this.$root.reload() // this one is not working 
    },

我想将这些数据转换为vuejs文件:

 DashboardData: [{'name': this.$t('IVR')}, {'name': this.$t('DTML')}, {'name': this.$t('SSH')}]

如果我执行window.location.reload(),则运行正常 但是我不想重新加载页面,因此,我正在考虑在vue中重新加载root,对此我不确定。

是否可以重新加载整个应用程序的根元素或所有属性?

2 个答案:

答案 0 :(得分:0)

如果您只是想通过vue.js执行安全的重新加载,则可以使用一种简单的方法...

vm.$forceUpdate();

有关更多信息,请访问here

答案 1 :(得分:0)

为什么要重新加载?我正在使用vue-i18n,但我不会重新加载我的页面。这是代码:

home.vue

<v-list-tile @click="locale='fr'">
...
watch:{
   locale(val) {
       this.$i18n.locale=val;
    } 
},
mounted: function() {
   this.locale = this.$i18n.locale;
},

我的 app.js

...
import VueI18n from 'vue-i18n';
import messages from './lang/messages'
import dateTimeFormats from './lang/dateTimeFormats'
import numberFormats from './lang/numberFormats'
...
Vue.use(VueI18n);
let locale = navigator.language;
const i18n = new VueI18n({
  fallbackLocale: 'gb',
  locale: locale,
  messages,
  dateTimeFormats,
  numberFormats
})
...
const app = new Vue({
    el: '#app',
    router,
    store,
    i18n,
    components:{
        App
    }
});