vue.js - 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 ))
};
};
解决方案
$t 只是附加到的一些变量Vue.prototype
。您可以在i18n的源代码中看到它被分配。所以在你这样做之后Vue.install(i18n)
,你可以覆盖所有这些原型并创建你想要的任何名称。
推荐阅读
- php - 使用不同 ID 分隔数据 - mysql 或 phpexcel
- postgresql - Postgres 9.5 表复制
- html - 如何以角度切换单选按钮?
- mysql - 优化查询——mysql
- sockets - 如何在服务器侦听 udp:0.0.0.0:port 时从服务器端获取客户端的远程(目标)地址?
- javascript - 没有 JavaScript 响应
- python - 如何让 cmap 在三个 for 循环中以可迭代的方式工作?
- babeljs - Babel 插件:“transform-object-rest-spread”和“syntax-object-rest-spread”有什么区别
- kotlin - IntRange 对象如何访问 Iterator 函数,例如 forEach?
- javascript - Google Script Container boundscript onEdit 共享它会覆盖文件