關(guān)于vue-i18n國際化 不能將類型“TranslateResult”分配給類型“string”

關(guān)于vue-i18n國際化的注意點(diǎn)

在vue中如何使用vue-81in處理國際化此處不贅敘,記錄下遇到的異常拋錯(cuò)宪塔。

注意點(diǎn)一:使用報(bào)錯(cuò)

在單獨(dú)的文件中引入時(shí)磁奖,報(bào)錯(cuò)

//src/i18n/index.ts
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import utils from './../utils/utils'

import en from './en'
import zh from './zh'

Vue.use(VueI18n)  //會把$t掛到Vue.prototype上,以便在.vue文件中使用this.$t()

// 國際化
const i18n = new VueI18n({
    locale: utils.getCookie('language') || 'zh',// set locale
    messages: {
        zh: zh, // 中文語言包
        en: en // 英文語言包
    }
})

export default i18n
//ts文件引入
import { t } from '@/i18n'

const title = t('title')
console.log(title)

出現(xiàn)異常提示:Cannot read properties of undefined (reading '_t')


Image.png

改為:

import i18n from '@/i18n'

const title = i18n.t('title')
console.log(title)

注意點(diǎn)二:ts類型

不能將類型“TranslateResult”分配給類型“string”某筐。
不能將類型“LocaleMessages”分配給類型“string”比搭。

如:

private title: string = this.$t(’common.title‘)

提示以上的ts問題。

此時(shí)需要覆寫i18n的ts類型南誊。對應(yīng)github也有相應(yīng)的工單 :https://github.com/kazupon/vue-i18n/issues/410

添加ts聲明

// src/vue-i18n.d.ts
 import VueI18n from 'vue-i18n/types'

/**

 * Overloads VueI18n interface to avoid needing to cast return value to string.

 * @see [https://github.com/kazupon/vue-i18n/issues/410](https://github.com/kazupon/vue-i18n/issues/410)

 */

declare module 'vue-i18n/types' {

  export default class VueI18n {

    t(key: Path, locale: Locale, values?: Values): string;

    t(key: Path, values?: Values): string;

  }

}

declare module 'vue/types/vue' {

  interface Vue {

    $t: typeof VueI18n.prototype.t;

  }

  interface VueConstructor<V extends Vue = Vue> {

    i18n: typeof VueI18n.prototype;

  }

}

export {}

題外話

這陣子接觸到前端項(xiàng)目需要國際化的專項(xiàng)開發(fā)身诺,在已有的已上線多年的多個(gè)項(xiàng)目中無疑是個(gè)工作量龐大的挑戰(zhàn),這就更加需要依賴自動(dòng)化工具來幫我們省下大量不必要的人力開銷和時(shí)間成本弟疆。
此處推薦一個(gè)自動(dòng)國際化工具:前端自動(dòng)國際化解決方案
從基本面已經(jīng)解決70%的工作成本戚长,如果不滿足自己的需求也可以fork后再進(jìn)行二創(chuàng)定制化開發(fā),比如改寫為使用 recast 保留原始代碼的格式等怠苔。同時(shí)也非常感謝這位開源工具的大佬同廉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市柑司,隨后出現(xiàn)的幾起案子迫肖,更是在濱河造成了極大的恐慌,老刑警劉巖攒驰,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蟆湖,死亡現(xiàn)場離奇詭異,居然都是意外死亡玻粪,警方通過查閱死者的電腦和手機(jī)隅津,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劲室,“玉大人伦仍,你說我怎么就攤上這事『苎螅” “怎么了充蓝?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長喉磁。 經(jīng)常有香客問我谓苟,道長,這世上最難降的妖魔是什么协怒? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任涝焙,我火速辦了婚禮,結(jié)果婚禮上孕暇,老公的妹妹穿的比我還像新娘纱皆。我一直安慰自己湾趾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布派草。 她就那樣靜靜地躺著搀缠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪近迁。 梳的紋絲不亂的頭發(fā)上艺普,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音鉴竭,去河邊找鬼歧譬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛搏存,可吹牛的內(nèi)容都是我干的瑰步。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼璧眠,長吁一口氣:“原來是場噩夢啊……” “哼缩焦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起责静,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤袁滥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后灾螃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體题翻,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年腰鬼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嵌赠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熄赡,死狀恐怖猾普,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情本谜,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布偎窘,位于F島的核電站乌助,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏陌知。R本人自食惡果不足惜他托,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仆葡。 院中可真熱鬧赏参,春花似錦志笼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至韧掩,卻和暖如春紊浩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疗锐。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工坊谁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滑臊。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓口芍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親雇卷。 傳聞我的和親對象是個(gè)殘疾皇子鬓椭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容