国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Vue-i18n 在 JS 文件中如何使用

開發 前端
在Vue.js項目中,vue-i18n是一個比較流行的多語言方案。常規用法是在項目入口文件里,將它作為插件引入,然后在 .vue文件或者組件模板里按照 API 來調用就行。插件會自動往組件實例中注入$t方法。

 [[350712]]

在Vue.js項目中,vue-i18n是一個比較流行的多語言方案。常規用法是在項目入口文件里,將它作為插件引入,然后在 .vue文件或者組件模板里按照 API 來調用就行。插件會自動往組件實例中注入$t方法。

  1. const messages = { 
  2.   en: { 
  3.     message: { 
  4.       hello: 'hello world' 
  5.     } 
  6.   }, 
  7.   cn: { 
  8.     message: { 
  9.       hello: '你好世界' 
  10.     } 
  11.   } 
  12.  
  13. // Create VueI18n instance with options 
  14. const i18n = new VueI18n({ 
  15.   locale: 'cn', // set locale 
  16.   messages, // set locale messages 
  17. }) 
  18. new Vue({ i18n }).$mount('#app'
  19.  
  20. //App.vue 
  21. <div id="app"
  22.   <p>{{ $t("message.hello") }}</p> 
  23. </div> 
 

問題來了,如果不在組件模板里怎么辦?比如一些工具函數,請求攔截器等跟視圖無關的JS代碼中如何使用呢?插件的使用場景是在組件內部,也就是能訪問到組件實例的地方。對于其他地方的使用方法,官方文檔里貌似沒有提供直接的 API。摸索了一段時間終于解決,在此記錄下。

  1. import VueI18n from 'vue-i18n'
  2. const messages = { 
  3.   en: { 
  4.     message: { 
  5.       hello: 'hello world' 
  6.     } 
  7.   }, 
  8.   cn: { 
  9.     message: { 
  10.       hello: '你好世界' 
  11.     } 
  12.   } 
  13. const i18n = new VueI18n({ 
  14.   locale: 'cn', // set locale 
  15.   messages: messages , // set locale messages 
  16. }); 
  17.  
  18. console.log(i18n.tc('message.hello')) // 你好世界 

搭配 VS Code 插件

隨著項目規模的擴大,文本標簽會越來越多,手動維護非常麻煩。同時,模板里用"a.b.c"這樣的屬性字符串來引用文本,在源碼層面非常不易閱讀。這些問題,都應該由工具來解決。之前想過自己開發一個 VS Code 插件來解決這些問題,沒想到早就有人做好了。開源社區就是這么強大,你能想到的,早就有人做了。這個插件就叫 Vue i18n。

Vue i18n

早期版本不怎么好用,本人還提過 PR 修過缺陷。現在比較完善了,功能齊全,操作便捷。可以選中文本一鍵生成中英文,鍵名默認是組件路徑加隨機串,省去了命名的煩惱。還能在編輯器里直接看到對應的中文,鼠標懸浮顯示英文。總之比較方便,推薦使用。

前面介紹了vue-i18n在 Vue 組件外部使用的方法,但是對于這個 VS Code 插件有點小問題要解決。插件是根據源碼的字符串來匹配,然后在編輯器顯示出對應的文本。因此,源碼里一定要有 $t('xxx')字樣才行。

改成這樣就能顯示出來了:

看起來沒問題,但實際上運行會報錯:

運行時異常

這是為什么呢?點擊錯誤信息的調用棧進去看源碼,發現原來i18n.tc這個方法是綁定到this(運行時指向VueI18n對象)上去執行的,而這里的代碼執行的時候并沒有this,所以是undefined。

  1. VueI18n.prototype.tc = function tc (key, choice) { 
  2.     var ref; 
  3.     var values = [], len = arguments.length - 2; 
  4.     while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ]; 
  5.   return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values )) 
  6. }; 

所以,這里不能直接拿來調用,需要改變執行上下文。重新封裝下這個方法:

  1. import Vue from 'vue'
  2. import VueI18n from 'vue-i18n'
  3. import i18nLabels from '@/i18n'
  4.  
  5. Vue.use(VueI18n); 
  6. export const i18n = new VueI18n({ 
  7.   locale: 'zh', // set locale 
  8.   messages: i18nLabels, // set locale messages 
  9. }); 
  10.  
  11. // 重新封裝方法 
  12. export function $t(args) { 
  13.   return i18n.tc.call(i18n, args); 

使用的時候導入這個方法就行了。

本文轉載自微信公眾號「1024譯站」,可以通過以下二維碼關注。轉載本文請聯系1024譯站公眾號。

 

責任編輯:武曉燕 來源: 1024譯站
相關推薦

2017-07-14 10:10:08

Vue.jsMixin

2023-09-05 15:23:06

開發應用鴻蒙

2020-12-03 07:43:03

JS Ajax JavaScript

2015-08-19 09:21:19

國際電話區號代碼實踐

2021-04-17 18:24:04

Vue.js嵌套路由前端

2019-07-26 14:40:58

Vue.jsSocket.IO前端

2010-08-06 13:22:48

FlexCSS

2019-05-05 15:20:32

Linuxiotop磁盤

2022-08-30 23:40:32

JavaScrip圖表Chart.js

2020-09-22 07:35:42

Node.jsVue.js文件壓縮

2022-09-20 12:21:25

Vue2Vue3$attrs

2023-07-18 07:19:59

2021-05-08 06:14:28

Vue.js片段開發

2016-12-19 15:35:10

Web開發者jQueryi18n

2022-01-11 17:23:12

配置Node.jsNode

2019-09-24 20:07:30

Linux移動文件 命令

2023-07-28 13:55:40

便捷選項組件

2010-03-22 11:07:18

Python常用模塊I

2010-03-15 17:26:58

Python字典

2019-11-22 10:00:53

ICC配置文件Windows 10
點贊
收藏

51CTO技術棧公眾號

亚瑟在线精品视频| 91牛牛免费视频| 污视频网站在线| 日韩久久久久久久| 国产探花一区二区| 欧美猛交ⅹxxx乱大交视频| 国产在线xxxx| 久久一区二区三区四区五区 | 国产理论在线播放| 日韩大陆av| 成人h精品动漫一区二区三区| 久久伊人一区| 亚洲人体大胆视频| 日韩精品在线免费播放| 日本亚洲精品| 极品少妇xxxx偷拍精品少妇| 欧美精品在线一区| 91欧美精品| 国产精品国产a| 国产成+人+综合+亚洲欧美丁香花| 99视频免费| 色一区二区三区四区| 国产成人一区二区三区| 国产一区网站| 91性高湖久久久久久久久_久久99| 99精品视频在线观看播放| 国产精品日韩在线播放| 四季av一区二区三区免费观看| 欧美日韩另类国产亚洲欧美一级| 欧美xxxx黑人又粗又长精品| 黄色成人精品网站| 免费毛片一区二区三区久久久| 麻豆亚洲精品| 成人毛片100部免费看| 成人夜色视频网站在线观看| 热99这里只有精品| 国产精品妹子av| 性色a∨人人爽网站| 色综合久久久久| 中文字幕在线三区| 国产日韩欧美精品综合| 亚洲最大av网| 欧美色综合网| 久久成人在线视频| 欧美1区二区| 日韩女优av电影在线观看| 电影k8一区二区三区久久| 国产女人aaa级久久久级| 97人人模人人爽人人喊38tv| 国产亚洲在线| 日韩 欧美 视频| 一区二区在线免费| 在线观看av黄网站永久| 精品小视频在线| 久久97精品| 久久一区二区精品| 久久久五月婷婷| 久久久久国产精品嫩草影院| 日韩电影中文字幕一区| 牛牛影视久久网| 欧美激情视频一区二区三区| 91丨九色丨蝌蚪富婆spa| 性网站在线播放| 在线观看日韩欧美| 成人看的视频| 300部国产真实乱| 亚洲大片免费看| heyzo一区| 国产精品毛片a∨一区二区三区|国| 久久精品五月| 国产三级免费观看| 亚洲国产精品久久久| 韩国精品福利一区二区三区 | 亚洲成人精品久久久| 年轻的保姆91精品| 国产伦精品一区二区三区免费视频 | 91久久奴性调教| se69色成人网wwwsex| 国产精品视频白浆免费视频| 久久99精品久久久久婷婷| 超碰超碰97| 成人丝袜18视频在线观看| julia京香一区二区三区| 亚洲电影免费观看高清完整版在线 | 欧美精品成人一区二区在线观看 | 秋霞影院一区| 国产一区二区三区黄| 久久日韩精品一区二区五区| a天堂中文在线88| 7777精品视频| 国产电影一区二区三区| av在线之家电影网站| 国产69精品久久久久9| 九色成人搞黄网站| 国产精品99久久久久久久| 91丝袜美腿高跟国产极品老师 | 川上优av中文字幕一区二区| 欧美日韩在线三级| 视频精品二区| 亚洲激情免费视频| 91麻豆精品久久久久蜜臀| 国产日产精品一区二区三区四区的观看方式 | 综合亚洲深深色噜噜狠狠网站| 成熟丰满熟妇高潮xxxxx视频| 日韩欧美在线观看视频| 深夜福利一区二区三区| 日韩高清专区| 欧美在线小视频| 在线资源av| 97婷婷涩涩精品一区| 狠狠色丁香婷婷综合| 麻豆视频在线| 91丨九色丨国产在线| 亚洲丝袜精品丝袜在线| 欧美承认网站| 久久久精品影院| 国产精品麻豆| 国产aaa免费视频| 亚洲电影免费观看高清| 欧美日韩在线大尺度| 蜜臀一区二区三区| 色综合久久88色综合天天免费| 国产精品极品| 国产肥臀一区二区福利视频| 国产婷婷97碰碰久久人人蜜臀| 丝袜a∨在线一区二区三区不卡| 小小水蜜桃在线观看| 国产免费亚洲高清| 亚洲a一区二区| 欧美久久综合网| 老司机色在线视频| 成人福利网站在线观看| 亚洲精品国产无天堂网2021| 综合视频一区| 日韩免费看片| 在线视频欧美日韩精品| 久久久亚洲一区| www免费网站在线观看| 亚洲中国色老太| 色综合天天做天天爱| 国产精品hd| 成码无人av片在线观看网站| 蜜桃狠狠色伊人亚洲综合网站| 91麻豆精品国产91久久久更新时间| 日韩一区二区免费在线观看| 日韩av免费一区| www.亚洲人| 久久91视频| 91九色在线观看视频| 中文字幕亚洲欧美一区二区三区| 国产乱色国产精品免费视频| 成人软件在线观看| 亚洲国产精品久久不卡毛片| 日本午夜精品久久久| 成人黄动漫网站| 国产精品久久久久久久久久久久久久 | 一区二区在线免费观看| 国产剧情一区| 日本1级在线| 四虎影视永久免费在线观看一区二区三区| 亚洲成人a**站| 91麻豆国产精品久久| 亚洲精品国模| 在线免费观看的av网站| 久久色精品视频| 欧美fxxxxxx另类| 精品无码国产一区二区三区av | 国产高清视频免费最新在线| 国产精品果冻传媒潘| 亚洲国产成人精品久久久国产成人一区 | 亚洲区欧美区| 激情国产在线| 亚洲欧美视频二区| 国产一区香蕉久久| 91.com在线观看| 成人av网在线| 日本在线电影一区二区三区| 午夜在线小视频| 亚洲熟妇无码一区二区三区导航| 亚洲高清三级视频| 国产综合激情| 国产日本久久| 噜噜噜在线观看播放视频| 国产卡一卡二在线| 亚洲国产视频直播| 麻豆9191精品国产| 精品国产一区二区三区成人影院 | 2019av中文字幕| 欧美视频一区二区三区| 国产精一区二区| 在线免费看污| 久久噜噜噜精品国产亚洲综合| 亚洲va欧美va国产va天堂影院| 青娱乐精品在线视频| 丝袜美腿一区二区三区动态图| a毛片在线观看| eeuss在线观看| 日韩中文字幕三区| 日本亚洲自拍| 国产精品欧美日韩一区二区|