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

Combining Vue-i18n Single File Component syntax with root messages

我正在试验出色的 vue-i18n plugin for Vue. It has a 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>

国际化定义似乎是 merged together,因此,在组件中,您可以访问父级和子级国际化定义,子级定义覆盖父级定义(例如,如果您在父项和子项中有一个 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>