温馨提示:本文翻译自stackoverflow.com,查看原文请点击:vue.js - How to use vue-i18n in custom VuePress components?
vue.js vuepress

vue.js - 如何在自定义VuePress组件中使用vue-i18n?

发布于 2020-09-29 19:33:22

我正在使用VuePress框架为我的项目构建多语言网站。VuePress文档中的国际化指南》非常有用,但没有说明如何转换目录中的自定义Vue.js组件.vuepress/components/

从我收集的数据来看,最好的解决方案是将vue-i18n插件与VuePress集成在一起,但是似乎没有关于如何执行此操作的指南?

查看更多

提问者
tillsanders
被浏览
6
tillsanders 2020-08-05 21:11

这可能不是完美的解决方案,但可以按预期工作:

  1. 跟着 国际化指南》并设置多个语言环境。
  2. 安装 VUE-国际化npm i vue-i18n
  3. 假设您使用的是默认主题,我们将对其进行扩展以将vue-i18n挂钩到其中。创建一个自定义主题目录:mkdir ./.vuepress/theme/
  4. index.js文件添加到新创建的主题目录:
// .vuepress/theme/index.js

module.exports = {
  extend: '@vuepress/theme-default' // extend the default VuePress theme
}
  1. 通过将另一个文件添加到同一目录来安装vue-i18n,该enhanceApp.js文件使您可以进行一些应用程序级增强
// .vuepress/theme/enhanceApp.js

import VueI18n from 'vue-i18n'

export default ({ Vue, options }) => {
  Vue.use(VueI18n);

  options.i18n = new VueI18n({
    locale: 'en',
  });
}
  1. 在您的自定义组件中,您可以设置传递全局计算属性的当前语言环境$lang
// .vuepress/components/Foo.vue

export default {
  mounted() {
    this.$i18n.locale = this.$lang;
  },
  i18n: {
    messages: {
      'en-US': { title: 'Foo' },
      'de-DE': { title: 'Bar' }
    }
  }
};

我发现没有简单的解决方案可以挂接到根组件上以全局设置当前语言环境。也许其他人对如何实现这一目标有暗示?