首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue l18n $t未定义

Vue l18n $t未定义
EN

Stack Overflow用户
提问于 2020-02-01 22:50:46
回答 2查看 951关注 0票数 1

我可以在组件中使用$t

代码语言:javascript
复制
:label="$t('sign-up.terms-label')"

在javascript中:

代码语言:javascript
复制
 case 'email':
   this.errors.push(this.$t('sign-up.email-exists')); break;

但我不能在扩展中使用它:

代码语言:javascript
复制
import { extend, localize, ValidationObserver } from 'vee-validate';
localize({
  cs: {
   names: {
     email: $t('sign-up.email-label'),

EsLint说这个函数是未定义的。

我想本地化vee-validate的字段名称,如下所述:

https://logaretm.github.io/vee-validate/guide/localization.html#using-the-default-i18n

I18N是这样定义的:

代码语言:javascript
复制
Vue.use(VueI18n);

export default new VueI18n({
  locale: process.env.VUE_APP_I18N_LOCALE || 'cs',
  fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'cs',
  messages: loadLocaleMessages(),
});
EN

回答 2

Stack Overflow用户

发布于 2020-02-03 15:24:57

出现错误,因为$t未在此作用域中定义。

the guide所示,$t应该在Vue组件之外的vue-i18n实例上被引用为一个方法。

如果它是在另一个模块中定义的,则应该从从中导出vue-i18n实例的模块中导入:

代码语言:javascript
复制
import i18n from './i18n';

...

localize({
  cs: {
   names: {
     email: i18n.$t('sign-up.email-label'),
     ...
票数 2
EN

Stack Overflow用户

发布于 2020-02-04 00:04:18

您可以从created()方法调用extend,这样您就可以访问this.$t了。

代码语言:javascript
复制
created() {
  localize({
    cs: {
     names: {
       email: this.$t('sign-up.email-label'),
  //...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60017991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档