将Vue-i18n单文件组件语法与根消息相结合

时间:2017-06-08 21:56:03

标签: vuejs2 vue-i18n

我正在尝试使用Vue优秀的vue-i18n插件。它有一个neat feature,允许我将翻译直接嵌入到需要它们的模板中。但是,如果我使用它们,我将无法访问根转换节点。是支持这种模式还是我做错了?

main.js

import VueI18n from 'vue-i18n';
Vue.use(VueI18n);
const i18n = new VueI18n({
  locale: 'en',
  messages: {
    en: {
      'company-name': 'billy-bob\'s fine steaks.'
    }
  }
});

Sample.vue

<i18n>
  {
    "en": {
      "title": "@:company-name - yeee hawwww!!!"
    }
  }
</i18n>

<template>
  <div id="app" class="container">
    <site-header :title="$t('title')"></site-header>
  </div>
</template>

1 个答案:

答案 0 :(得分:2)

似乎i18n定义为merged together,因此,在组件中,您可以访问父级和子级i18n定义,子级定义会覆盖父级,其中存在任何重叠(例如,如果您在父母和子女中有一个title密钥,则会使用该子密钥。

但是,您明确使用的语法不起作用。在这种情况下,我想我会定义一个计算结合两个翻译的值并使用它。

computed:{
    title(){
        return this.$t("company-name") + this.$t("title")
    }
}

然后只使用模板中的计算值。

<template>
  <div id="app" class="container">
    <site-header :title="title"></site-header>
  </div>
</template>