1、前言
在 Vue 3 项目中结合 vue-i18n
和 Element Plus
实现中英文切换是一个常见的需求。下面是一个详细的步骤指南,帮助你完成这个任务。
安装引入
1. 安装依赖
首先,你需要安装 vue-i18n
和 Element Plus
。
npm install vue-i18n@next element-plus --save
第二步骤:安装vue-i18n
// npm
npm install vue-i18n@9
// yarn
yarn add vue-i18n@9
2. 创建国际化文件
在项目中创建一个文件夹 locales
,然后在里面创建两个文件:en.js
和 zh.js
,分别用于存储英文和中文的翻译。
locales/en.js
第三步: 在index.js里,引入vue-i18n,并进行相关配置后导出
export default {
message: {
hello: 'Hello, world!'
},
button: {
submit: 'Submit'
},
// 其他翻译
};
locales/zh.js
export default {
message: {
hello: '你好,世界!'
},
button: {
submit: '提交'
},
// 其他翻译
};
3. 配置 vue-i18n
在 main.js
或 main.ts
文件中配置 vue-i18n
。
main.js
或 main.ts
import { createApp } from 'vue';
import App from './App.vue';
import { createI18n } from 'vue-i18n';
import en from './locales/en';
import zh from './locales/zh';
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css';
const messages = {
en: en,
zh: zh
};
const i18n = createI18n({
locale: 'zh', // 默认语言
messages,
});
const app = createApp(App);
app.use(i18n);
app.use(ElementPlus);
app.mount('#app');
4. 使用 vue-i18n
进行翻译
在你的 Vue 组件中使用 $t
方法进行翻译。
App.vue
<template>
<div>
<h1>{{ $t('message.hello') }}</h1>
<el-button>{{ $t('button.submit') }}</el-button>
<el-select v-model="currentLocale" @change="changeLocale">
<el-option label="English" value="en"></el-option>
<el-option label="中文" value="zh"></el-option>
</el-select>
</div>
</template>
<script>
export default {
data() {
return {
currentLocale: this.$i18n.locale,
};
},
methods: {
changeLocale() {
this.$i18n.locale = this.currentLocale;
}
}
};
</script>
5. 配置 Element Plus
国际化
为了让 Element Plus
的组件也支持国际化,你需要在 main.js
或 main.ts
中配置 Element Plus
的国际化
import { createApp } from 'vue';
import App from './App.vue';
import { createI18n } from 'vue-i18n';
import en from './locales/en';
import zh from './locales/zh';
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css';
import zhCn from 'element-plus/lib/locale/lang/zh-cn';
import enUs from 'element-plus/lib/locale/lang/en';
const messages = {
en: {
...en,
...enUs
},
zh: {
...zh,
...zhCn
}
};
const i18n = createI18n({
locale: 'zh', // 默认语言
messages,
});
const app = createApp(App);
app.use(i18n);
app.use(ElementPlus, {
locale: i18n.global.locale === 'zh' ? zhCn : enUs,
});
app.mount('#app');
6. 运行项目
完成上述配置后,你可以运行项目并测试中英文切换功能。
npm run serve
总结
通过以上步骤,你已经成功地在 Vue 3 项目中结合 vue-i18n
和 Element Plus
实现了中英文切换功能。你可以根据项目需求进一步扩展和优化这个功能。