internationalization - vue-i18n 中的动态本地化

标签 internationalization vuejs2 vue-i18n

我想动态更新 vue-i18n 中的本地化消息。

我正在建立一个网上商店,其中每个商品都有更多语言的描述。所以我想要实现的是,当我从 REST API 获取网上商店商品时,我想将它们的名称、描述等放入 vue-i18n 中的消息对象中,以便它可以使用它们。 vue-i18n API 有什么办法可以处理这个问题吗?另外,我从服务器获取数据(我得到一个 Promise),那么当我最终得到响应并将数据添加到本地化时,如何确保它在浏览器 View 中得到更新?

最佳答案

我所做的是编写一个 mixin,并在需要动态本地化的任何地方使用它:

export default {
  methods: {
    $t: function (translate) {
      if (typeof translate === 'string') {
        return this.$i18n.t(translate)
      } else if (translate === void 0) {
        return this.$i18n.t('loading')
      }
      return translate[this.$i18n.locale]
    }
  }
}

这样,当我的文本如下所示时,我可以调用 $t(text) (NOT $t('text') 当然):

data: function () {
   return {text: {en:'Book', de:'Buch', hu:'Könyv'}}
}

因此,在您的组件中,您必须导入它并将其添加为 mixin:

import dynamicLocalization from '@/components/mixins/dynamic-localization'

export default {
   ...
   mixins:[dynamicLocalization]
   ...
}

关于internationalization - vue-i18n 中的动态本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45908797/

相关文章:

javascript - Vue,我在组件上使用了 $mount() ,有没有办法 $unmount() 引用?

intellij-idea - WebStorm Vue-i18n,无论如何要获得编辑器自动完成支持?

vue.js - 如何在组件属性/property中使用Vue I18n翻译

javascript - 从 vue-i18n 设置的 vuejs 默认属性

ruby-on-rails - Rails 3 : Using HTML in i18n form helper translations

Angular 2 i18n-国际化 : message. xlf 为空

linux - 不同平台上的 tcl/tk 复杂脚本支持

grails - 覆盖约束错误消息在 Grails 中不起作用

Vue.js:用户单击按钮时加载模板(或 div)?

javascript - VueJS 按特定属性对对象数组进行排序/排序