Ошибка типа: невозможно прочитать свойство 'apply' из неопределенного в Vue -i18n - PullRequest
0 голосов
/ 31 марта 2020

Я сейчас использую 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 ))
  };
};

1 Ответ

0 голосов
/ 31 марта 2020

$ t - это только некоторая переменная, которая была присоединена к Vue.prototype. Вы можете видеть, что он назначен в исходном коде i18n . Поэтому после выполнения Vue.install(i18n) вы можете просто переопределить все эти прототипы и создать любые имена, какие захотите.

...