vue项目实现中英文切换

需求: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>

要在Vue 3应用程序中实现全局中英文切换,可以使用Vue I18n库。这个库可以让你轻松地实现国际化和本地化。 以下是实现步骤: 1. 首先,安装Vue I18n库。可以使用npm或yarn来安装: ``` npm install vue-i18n --save ``` 或 ``` yarn add vue-i18n ``` 2. 创建一个i18n.js文件并在其中设置i18n配置。在这个文件中,你需要设置默认的语言和翻译,以及一些i18n选项。 ```javascript import { createI18n } from 'vue-i18n' import en from './locales/en.json' import zh from './locales/zh.json' const i18n = createI18n({ locale: 'en', fallbackLocale: 'en', messages: { en, zh } }) export default i18n ``` 在上面的代码中,我们从"./locales/"目录中导入了en.json和zh.json文件,这些文件包含了我们的翻译。我们还设置了默认的语言为英语(en)和回退语言为英语(fallbackLocale: 'en')。 3. 在你的Vue应用程序的入口文件main.js中导入i18n.js文件并将其应用到Vue实例中。 ```javascript import { createApp } from 'vue' import i18n from './i18n' import App from './App.vue' createApp(App).use(i18n).mount('#app') ``` 在上面的代码中,我们使用Vue.createApp()创建了一个新的Vue实例,并使用i18n插件将i18n配置应用到Vue实例中。 4. 在你的Vue组件中使用i18n。可以使用$t()函数来获取翻译。 ```html <template> <div> <h1>{{ $t('title') }}</h1> <p>{{ $t('message') }}</p> </div> </template> <script> export default { name: 'HelloWorld', mounted() { console.log(this.$t('message')) } } </script> ``` 在上面的代码中,我们使用了$t()函数来获取'title'和'message'的翻译。如果当前的语言设置为英语,$t('title')将返回"Hello World",$t('message')将返回"Welcome to my Vue app!"。 5. 最后,你需要提供一个切换语言的方法,以便用户可以在应用程序中切换语言。你可以通过在i18n实例中设置locale属性来实现这一点。 ```javascript <i18n> { "title": "Hello World", "message": "Welcome to my Vue app!", "switch_language": "Switch Language", "current_language": "Current Language: " } </i18n> <template> <div> <h1>{{ $t('title') }}</h1> <p>{{ $t('message') }}</p> <button @click="switchLanguage">{{ $t('switch_language') }}</button> <p>{{ $t('current_language') }}{{ $i18n.locale }}</p> </div> </template> <script> export default { name: 'HelloWorld', methods: { switchLanguage() { if (this.$i18n.locale === 'en') { this.$i18n.locale = 'zh' } else { this.$i18n.locale = 'en' } } } } </script> ``` 在上面的代码中,我们在Vue组件中定义了一个switchLanguage()方法,当用户点击"Switch Language"按钮时,该方法将切换当前语言。我们还在模板中添加了一个显示当前语言的文本,以便用户知道当前的语言是什么。 以上就是实现Vue 3全局中英文切换的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值