1.下載安裝插件
命令進入項目目錄,執行以下命令安裝vue 國際化插件vue-i18n
npm install vue-i18n --save
2. 項目增加國際化翻譯文件
在項目的src下添加lang文件夾增加中文翻譯文件(zh.js)以及英文翻譯文件(en.js),里面分別存儲項目中需要翻譯的信息。
en.js 英文語言包:
export const m = { // 導航欄 navbar:{ HOME:'HOME', ABOUTUS:'ABOUT US', SERVICES:'SERVICES', LIVERATE:'LIVE RATE', NEWS:'NEWS', CONTACTUS:'CONTACT US' }, // 底部 footer:{ CONTACTUS:'CONTACT US', WEBSITENAVIGATION:'WEBSITE NAVIGATION', ABOUTUS:'ABOUT US', OURSERVICES:'OUR SERVICES', NEWS:'NEWS', LIVERATE:'LIVE RATE', CUSTOMERSERVICE:'CUSTOMER SERVICE', WECHAT:'WECHAT' }, // 首頁 index:{ SERVICES:'SERVICES', NEWS:'NEWS', GOLDMATENEWS:'GOLDMATE NEWS', MARKETINSIGHT:'MARKET INSIGHT', KUNDAX:'KUNDAX', GOLDMATE:'GOLDMATE', GOLDMATEGROUP:'GROUP', KUNDAGROUP:'GROUP' } }
zh.js 中文語言包
export const m = { // 導航欄 navbar:{ HOME:'首頁', ABOUTUS:'關於我們', SERVICES:'主營業務', LIVERATE:'實時匯率', NEWS:'最新資訊', CONTACTUS:'聯系我們' }, // 底部 footer:{ CONTACTUS:'聯系我們', WEBSITENAVIGATION:'網站地圖', ABOUTUS:'關於我們', OURSERVICES:'主營業務', NEWS:'最新資訊', LIVERATE:'實時匯率', CUSTOMERSERVICE:'客服熱線', WECHAT:'微信公眾號' }, // 首頁 index:{ SERVICES:'主營業務', NEWS:'最新資訊', GOLDMATENEWS:'公司要聞', MARKETINSIGHT:'匯市動態', KUNDAX:'坤達速匯', GOLDMATE:'中聯匯兌', GOLDMATEGROUP:'中聯集團介紹', KUNDAGROUP:'坤達集團介紹' } }
3. 項目引入
import VueI18n from 'vue-i18n' Vue.use(VueI18n) const i18n = new VueI18n({ locale: 'zh-CN', // 語言標識 //this.$i18n.locale // 通過切換locale的值來實現語言切換 messages: { 'zh-CN': require('./lang/zh'), // 中文語言包 'en-US': require('./lang/en') // 英文語言包 } }) new Vue({ el: '#app', router: router, i18n,// 不要忘記 render: h => h(App), mounted () { }, created () { } });
上面的代碼正式將 vue-i18n 引入 vue 項目中,創建一個 i18n 實例對象,方便全局調用。我們通過 this.$i18n.locale 來進行語言的切換。當 locale 的值為‘zh-CN’時,版本為中文;當 locale 的值為‘en-US’,版本為英文。當然你也可以換成 zh 和 en,這個不固定,只需要對應上。
4. 語言切換
// 切換語言 changeLanguage() { if (this.language == "zh-CN") { this.language = "en-US"; this.$i18n.locale = this.language; //關鍵語句 this.addCookie("lang", this.language); } else { this.language = "zh-CN"; this.$i18n.locale = this.language; //關鍵語句 this.addCookie("lang", this.language); } location.reload(); }
this.$i18n.locale
,當你賦值為‘zh-CN’時,就變成中文;當賦值為 ‘en-US’時,就變成英文。
5.vue-i18n 數據渲染的模板語法
我們知道 vue 中對於文字數據的渲染,有以‘’{{}}‘’或者 v-text、v-html等的形式,同樣的使用國際化后,依舊可以沿用,但需要一點修改
//v-text: <span v-text="$t('m.navbar.HOME')"></span> //{{}}: <span>{{$t('m.navbar.HOME')}}</span>
6.iview組件中的中英文切換
<FormItem :label="$t('m.exchangeRate.Rate')" prop="exchangeRate"> <Input clearable class="longInput" v-model="formValidate.exchangeRate" :placeholder="$t('m.exchangeRate.input')"></Input> </FormItem>
7.如何實現整個項目語言切換
(1)所有獲取數據的接口提供一個參數用於獲取中文或英文的數據
(2)固定的展示文字的放入語言包中切換即可
(3)將當前語言類型存入cookie中
(4)進入頁面即獲取cookie中的語言類型去設置請求數據的接口所對應語言的參數
(5)切換語言時,首先判斷當前語言是中文還是英文,並做對應的切換,最后將切換的語言存入cookie中
(6)問題:當前頁面的接口無法切換語言
解決:重新刷新頁面即可
原文地址:https://blog.csdn.net/qq_40542728/article/details/92661059