当前位置:首页 » 《资源分享》 » 正文

vue项目实现中英文切换

21 人参与  2024年03月28日 10:30  分类 : 《资源分享》  评论

点击全文阅读


需求:vue项目实现中英文切换

效果图如下:

 

步骤一:安装vue-i18n

注意:如果使用vue3,则不用指定版本安装,如果是vue2,就要指定版本如下:

npm i vue-i18n@8.23.0

步骤二:创建基本目录(language文件夹是翻译的数据文件,views文件夹下的是页面,part1和part2代表项目的不同模块,每个模块下都有对应的页面)

 步骤三:简单编写下基本界面

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'   //设置中英文模式      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;">测试文本:</span>{{ $t("part1.page1.content") }}</p>        <br>        <br>        <a style="color: red;" @click="gopart1page2">点我跳转part1 page2</a>    </div></template><script>export default {    methods: {        gopart1page2() {            // 跳转part1 page2(同一模块下的不同页面)            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;">测试文本:</span>{{ $t("part1.page2.content") }}</p>        <br>        <br>        <a style="color: red;" @click="gopart2page1">点我跳转part2 page1</a>        <br>        <a style="color: red;" @click="goback">返回</a>    </div></template><script>export default {    methods: {        gopart2page1() {            // 跳转part1 page2(不同模块下的不同页面)            this.$router.push('/part2page1Router')        },        goback() {            // 返回上一页面            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;">测试文本:</span>{{ $t("part2.page1.content") }}</p>        <br>        <br>        <a style="color: red;" @click="goback">返回</a>    </div></template><script>export default {    methods: {        goback() {            // 返回上一页面            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

步骤四:编写翻译文件

language/data/part1/page1.js

const data = {    ZH: {        // part1 page1        content: "我是part1page1,喜欢吃苹果!"    },    EN: {        content: "I am Part1Page1 and enjoy eating apples!"    }}export default data

language/data/part1/page2.js

const data = {    ZH: {        // part1 page1        content: "我是part1page2,喜欢吃草莓!"    },    EN: {        content: "I am Part1Page1 and enjoy eating strawberries!"    }}export default data

language/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 data

language/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 en

language/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里获取用户中英文选择,没有则默认中文  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>


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/86966.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 贵妃每天只想当咸鱼小说(萧兮兮洛清寒)(贵妃每天只想当咸鱼)整本+后续+结局在线阅读
  • 云纾君迟玉:+后续+番外半溪明月枕清风无删减小说在线无广告高口碑小说
  • 新章速递既负如来又负卿是什么小说(莫司淮唐乐薇)完本阅读无广告(莫司淮唐乐薇)
  • 林齐(林齐)火爆小说全集免费阅读_反转传奇林齐:结局+番外无弹窗最新章节笔趣阁(林齐)
  • 萧兮兮洛清寒小说(贵妃每天只想当咸鱼)起点章节+全篇阅读热门作品预订
  • 穿成塌房顶流,我靠爆料翻红(陈昭陈莹静)_穿成塌房顶流,我靠爆料翻红
  • (番外)+(全文)谢青霄林相宜(八零奉子成婚,死对头成了妻管严:全文+结局+番外)全文免费阅读无弹窗大结局_(谢青霄林相宜)最新章节列表_笔趣阁(八零奉子成婚,死对头成了妻管严:全文+结局+番外)
  • 傅修言沈知穗小说(沈知穗傅修言)小说***下载_章节前文+后续(傅修言沈知穗)
  • 陆译林初夏小说(替身攻略失败后摆烂了)全文免费阅读_(替身攻略失败后摆烂了)陆译林初夏小说最新章节列表
  • 全书浏览说好摸鱼打游戏,你爆杀华尔街?(王文斌方幻)_说好摸鱼打游戏,你爆杀华尔街?(王文斌方幻)全书结局
  • (重生后高傲妻子我不爱了)重生后高傲妻子我不爱了(梁言彻尹暖芸)无套路无弹窗全部章节列表
  • (番外)+(全文)傅修言沈知穗:番外+全文+后续(沈知穗傅修言)完整版小说阅读_傅修言沈知穗:番外+全文+后续免费阅读_笔趣阁(沈知穗傅修言)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1