鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ vue.js 過濾器中怎么調(diào)用 i18n 對(duì)象獲取相應(yīng)語(yǔ)言?

vue.js 過濾器中怎么調(diào)用 i18n 對(duì)象獲取相應(yīng)語(yǔ)言?

定義了一個(gè) filter/index.js 文件,里面 export 出很多 function,如下:


export function parseTime(time, cFormat) {
  //省略邏輯部分
  return time_str;
}

然后在 main 里面注冊(cè)該過濾器,如下:

import * as filters from './filters'

Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
});

項(xiàng)目多語(yǔ)言是通過vue-i18n實(shí)現(xiàn)的,我想要實(shí)現(xiàn)一個(gè)功能,通過狀態(tài)編號(hào),配合過濾器,把狀態(tài)id轉(zhuǎn)換成相應(yīng)語(yǔ)言的文字描述。

但是現(xiàn)在有一個(gè)問題,因?yàn)檫^濾器是一個(gè)js文件,沒辦法this.$t()這些方式來(lái)獲取vue-i18n對(duì)象,該怎么做呢?

回答
編輯回答
我以為

思路:
1、分別把多語(yǔ)言都倒入到過濾器里面;
2、在過濾器中可以通過封裝的模塊獲取當(dāng)前語(yǔ)言,然后根據(jù)多語(yǔ)言決定使用哪個(gè)語(yǔ)言信息模塊對(duì)象;

不過這么看來(lái),vue.js 文件可以通過不刷新來(lái)切換多語(yǔ)言有點(diǎn)雞肋了,以為模塊化的話就必須有一部分單獨(dú)提取到.js文件里面,但是.js文件里米娜的內(nèi)容并不支持這種方式切換。

有人有更好的方法么?

2017年5月18日 04:47
編輯回答
護(hù)她命

給過濾器傳參數(shù),

2018年9月7日 11:11