1. 程式人生 > >前端框架Vue(16)——vue-i18n ,vue專案中如何實現國際化

前端框架Vue(16)——vue-i18n ,vue專案中如何實現國際化

一、前言

  趁著10月的最後一天,來寫一篇關於前端國際化的實踐型部落格。國際化應該都不陌生,就是一個網站、應用可以實現語言的切換。

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

二、demo 場景需求分析

這裡寫圖片描述

需求很簡單,左上角 ‘’網易雲音樂‘’就是一箇中英文切換的按鈕,點選彈出提示框,確認切換語言後,實現英文版本。

這裡寫圖片描述

切換成英文版本:

這裡寫圖片描述

三、實現國際化

  首先,我開發是以 vue 為技術棧,所以如題用的國際化外掛是 vue-i18n,附上 github 傳送門

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 英文語言包:

export const m = { 
  music: 'Music',//網易雲音樂
  findMusic: 'FIND MUSIC',//發現音樂
  myMusic: 'MY MUSIC',//我的音樂
  friend: 'FRIEND',//朋友
  musician: 'MUSICIAN',//音樂人
  download: 'DOWNLOAD'//下載客戶端
}

zh.js中文語言包:

export const m = {
  music: '網易雲音樂',
  findMusic: '發現音樂',
  myMusic: '我的音樂',
  friend: '朋友',
  musician: '音樂人',
  download: '下載客戶端'
}

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

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

locale: 'zh-CN',    // 語言標識
    messages: {
      'zh-CN': require('./common/lang/zh'),   // 中文語言包
      'en-US': require('./common/lang/en')    // 英文語言包
    }

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

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

/**
 * 切換語言 
 */ 
 changeLangEvent() {
   this.$confirm('確定切換語言嗎?', '提示', {
       confirmButtonText: '確定',
       cancelButtonText: '取消',
       type: 'warning'
    }).then(() => {
       if ( this.lang === 'zh-CN' ) {
          this.lang = 'en-US';
          this.$i18n.locale = this.lang;//關鍵語句
       }else {
          this.lang = 'zh-CN';
          this.$i18n.locale = this.lang;//關鍵語句
       }
    }).catch(() => {
       this.$message({
           type: 'info',
       });          
    });
}

這邊的重點就是,點出的‘’關鍵語句‘’:this.$i18n.locale,當你賦值為‘zh-CN’時,導航欄就變成中文;當賦值為 ‘en-US’時,就變成英文。效果圖就是文章前面的樣子。

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

四、vue-i18n 資料渲染的模板語法

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

<span v-text="$t('m.music')"></span>

{{}}:

<span>{{$t('m.music')}}</span>

五、vue-cli 、vue-i18n 開發練手專案地址

專案開源在 github 上,文件較完善,可以嘗試練手,如果你覺得還可以,感謝能給一個 star 。

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

相關推薦

前端框架Vue16——vue-i18n vue專案如何實現國際化

一、前言   趁著10月的最後一天,來寫一篇關於前端國際化的實踐型部落格。國際化應該都不陌生,就是一個網站、應用可以實現語言的切換。   在這就不談原理,只說說如何實現中英文的切換。做技術的總得先把 demo 做出來嘛。 二、demo 場景需求分析

AngularJs前端框架搭建

(持續更新) 寫在最前面,從實習到畢業後這大半年來都是在現在所在的公司工作,才開始接觸公司的專案時,後端都是用的熟悉的知識,然後前端卻用了從來沒聽說過得angularjs,從開始接觸到現在,也算是會熟練的寫裡面的內容了吧。但是整體還是很迷糊,最近正好有個自己的

BeetlSQL框架學習——初識BeetlSQL特點內置sql的使用Pojo代碼生成等

spa imp 文件 無需 結束 innodb inter tostring postgre 學習BeetlSQL總結(1)一.BeetlSQL特點:1.開發效率:(1)無需註解,能自動使用大量的內置sql,快速完成增,刪,改,查的功能(2)數據模型支持Pojo,也支持Ma

[轉] webpack之前端效能優化史上最全不斷更新。。。

最近在用webpack優化首屏載入效能,通過幾種外掛之後我們上線前後的速度快了一倍,在此就簡單的分享下吧,先上個優化前後首屏渲染的對比圖。 可以看到總下載時間從3800ms縮短到1600ms。 我們在用webpack時一般都會選擇多入口檔案吧,為的就是將自己的原始碼跟第三方庫程式碼分離。這是之前的程式

python3 django框架開發 連線MySQLHTML進行登入註冊操作

轉載請註明:https://blog.csdn.net/weixin_40490238/article/details/84573309 在上一篇中已經連線好了mysql,建立好使用者表 現在完成 HTML 的使用者登入註冊 sign-in.html的登入表單:

python3 django框架開發 連線資料庫建表

轉載請註明:https://blog.csdn.net/weixin_40490238/article/details/84573309 安裝pymysql包,點選settings 查詢pymysql,點選install package 開啟settings.p

laravel框架學習安裝laravel及laravel-ide-helper增強程式碼提示

1.安裝laravel框架 使用新框架composer是必須會使用的 在PHP環境下 WWW下 直接輸入以下程式碼 composer create-project --prefer-dist laravel/laravel blog "5.4.*" 回車會自動下載lar

框架學習1——service層dao層和service實現類進行資料庫操作

最近也是比較忙,也只能忙裡偷閒地抓緊時間接著學習一下技術,自從上次學習了maven之後,越來越對框架產生了興趣,下了好多的spring視屏,聽著老師的建議,最近也萌生了看別人的程式碼進行學習的想法,然後就上了知乎搜了搜優秀的java框架,發現了一個比較感興趣的,

Java NIO框架Nettynetty5例子程式碼詳解

這是一個netty快速入門的例子,也是我的學習筆記,比較簡單,翻譯於官方的文件整理後把所有程式碼註釋放在每一行程式碼中間,簡單明瞭地介紹一些基礎的用法。 首頁這是基於netty5的例子,如果需要使用請依賴netty5的包。maven引用方式 <de

程式設計師的演算法課16-B+樹在資料庫索引的作用

版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。

“造輪運動”之 ORM框架系列~談談我在實際業務的增刪改查

  想想畢業已經快一年了,也就是大約兩年以前,懷著滿腔的熱血正式跨入程式設計師的世界,那時候的自己想象著所熱愛的技術生涯會是多麼的豐富多彩,每天可以與大佬們坐在一起討論解決各種牛逼的技術問題,喝著咖啡,翹著二郎腿,大致就是下面這幅場景:        可是現實卻總是那麼不盡如人意,現實的所謂技術生涯

已知順序表L的元素為int請寫一時間複雜度On、空間複雜度為O1的程式將L的奇數元素排在前面偶數元素排在後面

Status exchangeEvenOddNumbers(SeqList &S){ int j = 0,k = 0; for(int i = 0;i<=S.last;i++){ if(S.elem[i]%2 == 1){ k

雜湊Hash資料結構使用C語言實現s。傻瓜也能

雜湊資料結構是一種非常簡單,實用的資料結構。原理是將資料通過一定的hash函式規則,然後儲存起來。使查詢的時間複雜度近似於O(1)。進而大大節省了程式的執行時間。 雜湊表的原理如圖 原來的資料可以直接通過雜湊函式儲存起來,這樣在搜尋的時候,等於每一個數據都有了自己的特定查詢號碼,

PTA 陣列迴圈左移 20 分 本題要求實現一個對陣列進行迴圈左移的簡單函式:一個數組a存有n>0個整數在不允許使用另外陣列的前提下將每個整數迴圈向左移m≥0個位置即將a

陣列迴圈左移 (20 分) 本題要求實現一個對陣列進行迴圈左移的簡單函式:一個數組a中存有n(>0)個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向左移m(≥0)個位置,即將a中的資料由(a​0​​a​1​​⋯a​n−1​​)變換為(a​m​​⋯a​n−

資料庫Android登入註冊介面簡單實現

本文使旨在用最簡單的Demo來實現原理,有不足之處歡迎指出,多多包涵,大家一起交流~ 1、一般兄弟們看這篇文章應該對資料庫多少有些瞭解,簡潔說SQL是Structured Query Languag

UI--微博動態點贊簡單效果的不簡單門道

《程式碼裡的世界》 —UI篇 【導航】 - 單行文字水平觸控滑動效果 通過EditText實現TextView單行長文字水平滑動效果 - 多行文字摺疊展開 自定義佈局View實現多行文字摺疊和展開 1.概述   說起空間動態、微

前端框架Vue13——vue 如何對公共css、 js 方法進行單檔案統一管理全域性呼叫

1、前言 最近,為公司開發交付的一個後臺管理系統專案,我使用了 Vue 框架進行開發實踐。 模組化、元件化、工程化的開發體驗非常好。良好的 api,優雅的設計,對於工程師非常友好。 但是由於模組比較多,我對於每個模組分配了不同的

前端框架Vue12——如何將 vue-cli 專案打包壓縮npm run build後放到伺服器

  當我們將 vue 專案完成後,面臨的就是如何將專案進行打包上線,放到伺服器中。我使用的是 vue-cli(simple) 腳手架,所以就講一下如何將專案進行打包,並放到 tomcat 上。   如果是 vue-cli (非 simple 腳手架),這篇

laravel裡的前端框架的選擇與切換切換前端框架時先執行none再執行bootstrap/vue命令

laravel裡的前端框架的選擇與切換(切換前端框架時先執行none再執行bootstrap/vue命令) php artisan preset none 清空所有前端資源 php artisan preset bootstrap 前端資源只使用bootstrap ph

前端框架Vue2——Vue-Router 路由跳轉

1、最簡單:html+js全在一個檔案中 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>動