如何从非 vue class 调用 vue i18n?

how to call vue i18n from non vue class?

我正在为 vuejs 应用程序使用 vue-i18n

一切都很好,除了我如何从不是 vue.js 扩展的 class 访问翻译。下面是一个简单的 class 包含 validation methods 供 element-ui 使用 例如:

import Validate from '@/services/Validate';

class FormValidate {
  public password(rule: any, value: string, callback: any) {
    callback(Validate.password(value) ? undefined : new Error('errors.passwordInvalid'));
  }
}

export default new FormValidate();

错误上方 "errors.passwordInvalid" 是翻译文件的密钥。

在一个典型的组件中 $t('errors.passwordInvalid') 将 return 以正确语言显示的人类友好字符串。

如何从这个孤立的 class 访问翻译库?

vue i18n github there or there 上有一个讨论帖。基本上答案似乎是您应该将与 i18n 相关的代码从 main.js 文件中分离到 i18n.js 文件中。这可能看起来像:

export default new VueI18n({
    // with all your settings here
})

然后将其作为纯 js 文件导入,t() 方法应该在任何地方都有效。