vue.js 过滤器中怎么调用 i18n 对象获取相应语言?
定义了一个 filter/index.js
文件,里面 export
出很多 function
,如下:
export function parseTime(time, cFormat) {
//省略逻辑部分
return time_str;
}
然后在 main
里面注册该过滤器,如下:
import * as filters from './filters'
Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key])
});
项目多语言是通过vue-i18n
实现的,我想要实现一个功能,通过状态编号,配合过滤器,把状态id转换成相应语言的文字描述。
但是现在有一个问题,因为过滤器是一个js
文件,没办法this.$t()
这些方式来获取vue-i18n
对象,该怎么做呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
思路:
1、分别把多语言都倒入到过滤器里面;
2、在过滤器中可以通过封装的模块获取当前语言,然后根据多语言决定使用哪个语言信息模块对象;
不过这么看来,vue.js 文件可以通过不刷新来切换多语言有点鸡肋了,以为模块化的话就必须有一部分单独提取到.js文件里面,但是.js文件里米娜的内容并不支持这种方式切换。
有人有更好的方法么?
给过滤器传参数,
你这样写不在vue中,需要包起来,直接在main.js的new Vue 赋给一个变量,然后再从变量中获取就可以了
如 main.js中
window.vm= new Vue({
// 单独js 中,
window.vm.$i18n.t('XXX')
可以去参考另一篇文章如何让一个vue项目支持多语言(vue-i18n)