首页 > 解决方案 > TypeError:无法读取 Vue-i18n 上未定义的属性“应用”

问题描述

我目前正在为该项目使用 Vue-i18n。

据我所知,所有要翻译的词都需要使用$t

有什么办法可以改成$t别的东西吗?也许有一些方法可以覆盖?

例如,而不是:{{ $t('name') }}

将其更改为:{{ $ba('name') }}


我设法使用 @Alex 方法做到了,但超过了i18n

但是如果我也更改了返回参数(从$t$ba),就会出现错误TypeError: Cannot read property 'apply' of undefined

有没有办法解决这个问题?

function extend (Vue) {
Vue.prototype.$ba = function (key) {
    var values = [], len = arguments.length - 1;
    while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];

    var i18n = this.$i18n;
    return i18n._ba.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))
  };
};

标签: vue.jsvuejs2internationalizationvue-componentvue-i18n

解决方案


$t 只是附加到的一些变量Vue.prototype您可以在i18n的源代码中看到它被分配。所以在你这样做之后Vue.install(i18n),你可以覆盖所有这些原型并创建你想要的任何名称。


推荐阅读