vue項(xiàng)目實(shí)現(xiàn)中英文切換的詳細(xì)步驟
需求:vue項(xiàng)目實(shí)現(xiàn)中英文切換
效果圖如下:

步驟一:安裝vue-i18n
注意:如果使用vue3,則不用指定版本安裝,如果是vue2,就要指定版本如下:
npm i vue-i18n@8.23.0
步驟二:創(chuàng)建基本目錄
(language文件夾是翻譯的數(shù)據(jù)文件,views文件夾下的是頁(yè)面,part1和part2代表項(xiàng)目的不同模塊,每個(gè)模塊下都有對(duì)應(yīng)的頁(yè)面)

步驟三:簡(jiǎn)單編寫(xiě)下基本界面
App.vue
<template>
<div id="app">
<!-- 111 -->
<!-- 中英文切換 -->
按我切換中英文
<button @click="chagelanguage">{{ language }}</button>
<router-view />
</div>
</template>
<script>
export default {
data() {
return {
language: "en",//中英文切換
}
},
methods: {
// 中英文切換
chagelanguage() {
this.$i18n.locale == 'zh' ? this.$i18n.locale = 'en' : this.$i18n.locale = 'zh' //設(shè)置中英文模式
if (this.$i18n.locale === 'zh') {
this.language = "en"
} else {
this.language = "zh"
}
},
}
}
</script>
<style lang="less" scoped></style>
views/part1/page1.vue
<template>
<div>
<h1 style="color:black">part1 page1</h1>
<p><span style="color:blue;font-weight:bold;font-size: 20px;">測(cè)試文本:</span>{{ $t("part1.page1.content") }}</p>
<br>
<br>
<a style="color: red;" @click="gopart1page2">點(diǎn)我跳轉(zhuǎn)part1 page2</a>
</div>
</template>
<script>
export default {
methods: {
gopart1page2() {
// 跳轉(zhuǎn)part1 page2(同一模塊下的不同頁(yè)面)
this.$router.push('/part1page2Router')
}
}
}
</script>
<style>
</style>views/part1/page2.vue
<template>
<div>
<h1>part1 page2</h1>
<p><span style="color:blue;font-weight:bold;font-size: 20px;">測(cè)試文本:</span>{{ $t("part1.page2.content") }}</p>
<br>
<br>
<a style="color: red;" @click="gopart2page1">點(diǎn)我跳轉(zhuǎn)part2 page1</a>
<br>
<a style="color: red;" @click="goback">返回</a>
</div>
</template>
<script>
export default {
methods: {
gopart2page1() {
// 跳轉(zhuǎn)part1 page2(不同模塊下的不同頁(yè)面)
this.$router.push('/part2page1Router')
},
goback() {
// 返回上一頁(yè)面
this.$router.go(-1)
}
}
}
</script>
<style></style>views/part2/page1.vue
<template>
<div>
<h1>part2 page1</h1>
<p><span style="color:blue;font-weight:bold;font-size: 20px;">測(cè)試文本:</span>{{ $t("part2.page1.content") }}</p>
<br>
<br>
<a style="color: red;" @click="goback">返回</a>
</div>
</template>
<script>
export default {
methods: {
goback() {
// 返回上一頁(yè)面
this.$router.go(-1)
}
}
}
</script>
<style></style>router/index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import part1page1 from '@/views/part1/page1'
import part1page2 from '@/views/part1/page2'
import part2page1 from '@/views/part2/page1'
Vue.use(VueRouter)
const routes = [
{
path: '/',
component: part1page1
}, {
path: '/part1page2Router',
component: part1page2
}, {
path: '/part2page1Router',
component: part2page1
}
]
const router = new VueRouter({
routes
})
export default router
步驟四:編寫(xiě)翻譯文件
language/data/part1/page1.js
const data = {
ZH: {
// part1 page1
content: "我是part1page1,喜歡吃蘋果!"
},
EN: {
content: "I am Part1Page1 and enjoy eating apples!"
}
}
export default datalanguage/data/part1/page2.js
const data = {
ZH: {
// part1 page1
content: "我是part1page2,喜歡吃草莓!"
},
EN: {
content: "I am Part1Page1 and enjoy eating strawberries!"
}
}
export default datalanguage/data/part1/index.js
import page1 from "./page1"
import page2 from "./page2"
export default {
page1,
page2
}language/data/part2/page1.js
const data = {
ZH: {
// part1 page1
content: "我是part2page1,喜歡吃芒果!"
},
EN: {
content: "I am Part1Page1 and enjoy eating mangoes!"
}
}
export default datalanguage/data/part2/index.js
import page1 from "./page1"
export default{
page1
}language/en.js
import part1 from './data/part1/index'
import part2 from './data/part2/index'
const en = {
language: {
name: "english"
},
// part1
part1: {
page1: {
content: part1.page1.EN.content
},
page2: {
content: part1.page2.EN.content
}
},
// part2
part2: {
page1: {
content: part2.page1.EN.content
}
},
}
export default enlanguage/zh.js
import part1 from './data/part1/index'
import part2 from './data/part2/index'
const zh = {
language: {
name: "中文"
},
// part1
part1: {
page1: {
content: part1.page1.ZH.content
},
page2: {
content: part1.page2.ZH.content
}
},
// part2
part2: {
page1: {
content: part2.page1.ZH.content
}
},
}
export default zh步驟五:全局配置
main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
//中英文切換
import ZH from '@/language/zh.js' //中文最終匯總暴露的信息
import EN from '@/language/en.js' //英文
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
const i18n = new VueI18n({
// localStorage.getItem('languageSet') || 'zh'
locale: 'zh', //從localStorage里獲取用戶中英文選擇,沒(méi)有則默認(rèn)中文
messages: {
'zh': ZH,
'en': EN
}
})
new Vue({
i18n,
router,
store,
render: h => h(App)
}).$mount('#app')另外:
如果要在js中引用如下
this.$t("part1.page1.content")在屬性中引用如下
<el-tooltip :content="$t('part1.page1.content')" placement="top"></el-tooltip>總結(jié)
到此這篇關(guān)于vue項(xiàng)目實(shí)現(xiàn)中英文切換的文章就介紹到這了,更多相關(guān)vue中英文切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解搭建一個(gè)vue-cli的移動(dòng)端H5開(kāi)發(fā)模板
這篇文章主要介紹了詳解搭建一個(gè)vue-cli的移動(dòng)端H5開(kāi)發(fā)模板,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Vue-cli3生成的Vue項(xiàng)目加載Mxgraph方法示例
這篇文章主要介紹了Vue-cli3生成的Vue項(xiàng)目加載Mxgraph方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
vue element實(shí)現(xiàn)多個(gè)Formt表單同時(shí)驗(yàn)證
這篇文章主要介紹了vue element實(shí)現(xiàn)多個(gè)Formt表單同時(shí)驗(yàn)證方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
vue3.2?reactive函數(shù)問(wèn)題小結(jié)
reactive用來(lái)包裝一個(gè)對(duì)象,使其每個(gè)對(duì)象屬性都具有響應(yīng)性(也就是深層次響應(yīng)式),這篇文章主要介紹了vue3.2?reactive函數(shù)注意點(diǎn)及問(wèn)題小結(jié),需要的朋友可以參考下2022-12-12
說(shuō)說(shuō)如何在Vue.js中實(shí)現(xiàn)數(shù)字輸入組件的方法
這篇文章主要介紹了說(shuō)說(shuō)如何在Vue.js中實(shí)現(xiàn)數(shù)字輸入組件的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Vue實(shí)現(xiàn)萬(wàn)年日歷的示例詳解
又是一個(gè)老生常談的功能,接下來(lái)會(huì)從零實(shí)現(xiàn)一個(gè)萬(wàn)年日歷,從布局到邏輯,再到隨處可見(jiàn)的打卡功能。文中的示例代碼簡(jiǎn)潔易懂,需要的可以參考一下2023-01-01

