VUE實現國際化


一、前言

趁着11月的最后一天,來寫一篇關於前端國際化的實踐型博客。國際化應該都不陌生,就是一個網站、應用可以實現語言的切換。

  在這就不談原理,只說說如何實現中英文的切換。做技術的總得先把 demo 做出來嘛。

二、demo 場景需求分析

需求很簡單,以上 ‘’項目導航‘’就是一個中英文切換的按鈕,點擊切換語言,實現中文版本。

切換成中文版本:

三、實現國際化

  首先,我開發是以 vue 為技術棧,所以如題用的國際化插件是 vue-i18n

1、我們得先有開發環境,先有項目跑起來,我推薦如果是喜歡用 vue 的小伙伴,可以嘗試 vue-cli 官方腳手架。這邊有我整理的一個腳手架 demo ,有助於你快速的進行 vue 模塊化開發。

2、我們需要安裝 vue-i18n, 推薦 npm 包依賴:

$ npm install vue-i18n

當然你也可以這樣:

<script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-i18n/dist/vue-i18n.js"></script>

3、注入 vue 實例中,項目中實現調用 api 和 模板語法

這邊我是順着使用 npm 安裝依賴進行。先在 main.js 中引入 vue-i18n。

import VueI18n from 'vue-i18n' Vue.use(VueI18n) // 通過插件的形式掛載 const i18n = new VueI18n({ locale: 'zh-CN', // 語言標識 //this.$i18n.locale // 通過切換locale的值來實現語言切換 messages: { 'zh-CN': require('./common/lang/zh'), // 中文語言包 'en-US': require('./common/lang/en') // 英文語言包 } }) /* eslint-disable no-new */ new Vue({ el: '#app', i18n, // 不要忘記 store, router, template: '<App/>', components: { App } })

上面的代碼正式將 vue-i18n 引入 vue 項目中,創建一個 i18n 實例對象,方便全局調用。我們通過 this.$i18n.locale 來進行語言的切換,同樣的我這邊的例子里就是通過點擊事件,點擊‘’中英文切換按鈕‘’,來觸發事件,切換locale 的值。

4、ok, 引入的事情就是這樣,那么既然實現國際化,這邊簡單的是中英文切換,那么自然我們需要中英文兩套語言的文件,vue-i18n中相對簡單,只需要兩個 js 文件,通過 require 的形式引入到 main.js。

en.js 英文語言包:

cn.js中文語言包:

最后我們只需要通過觸發事件的形式,來控制 locale 的值,去調用對應的語言包就可以實現國際化啦。

5、組件中如何去切換 locale 的值,實現語言切換。

 

在 main.js 中的代碼中,可以看到,當 locale 的值為‘zh’時,版本為中文;當 locale 的值為‘en’,版本為英文。當然你也可以換成 zh 和 en,這個不固定,只需要對應上。

好了,現在來看一下,我組件中的一個點擊事件中如何進行切換。

6、到這,前端 vue-i18n 國際化插件在 vue-cli 模塊化環境中的開發實踐就全部完成了。

四、vue-i18n 數據渲染的模板語法

我們知道 vue 中對於文字數據的渲染,有以‘’{{}}‘’或者 v-text、v-html等的形式,同樣的使用國際化后,依舊可以沿用,但需要一點修改。 

{{$t("listBar.Depthanalysis")}}

{{}}:

{{$t("listBar.Depthanalysis")}}

 如果 ,在 vue 開發中遇到相關問題,也可以在下面留言,我會不定時嘗試幫你解答。同樣之前也寫過一些在開發中解決的方案,可以看往期的博客,一個在路上的前端小白,歡迎指正。

博客寫的不太好請見諒!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM