Vue3+element-plus 实现中英文切换(Vue-i18n组件的使用)

1、前言

在 Vue 3 项目中结合 vue-i18nElement Plus 实现中英文切换是一个常见的需求。下面是一个详细的步骤指南,帮助你完成这个任务。

安装引入

1. 安装依赖

首先,你需要安装 vue-i18nElement Plus

复制代码
npm install vue-i18n@next element-plus --save

第二步骤:安装vue-i18n

bash 复制代码
// npm
npm install vue-i18n@9
 
// yarn
yarn add vue-i18n@9

2. 创建国际化文件

在项目中创建一个文件夹 locales,然后在里面创建两个文件:en.jszh.js,分别用于存储英文和中文的翻译。

locales/en.js

第三步: 在index.js里,引入vue-i18n,并进行相关配置后导出

java 复制代码
export default {
  message: {
    hello: 'Hello, world!'
  },
  button: {
    submit: 'Submit'
  },
  // 其他翻译
};

locales/zh.js

javascript 复制代码
export default {
  message: {
    hello: '你好,世界!'
  },
  button: {
    submit: '提交'
  },
  // 其他翻译
};

3. 配置 vue-i18n

main.jsmain.ts 文件中配置 vue-i18n

main.jsmain.ts
javascript 复制代码
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
javascript 复制代码
<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.jsmain.ts 中配置 Element Plus 的国际化

javascript 复制代码
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-i18nElement Plus 实现了中英文切换功能。你可以根据项目需求进一步扩展和优化这个功能。

相关推荐
lbh15 小时前
当我开始像写代码一样和AI对话,一切都变了
前端·openai·ai编程
We་ct16 小时前
LeetCode 918. 环形子数组的最大和:两种解法详解
前端·数据结构·算法·leetcode·typescript·动态规划·取反
qq_4061761416 小时前
深入浅出 Pinia:Vue3 时代的状态管理新选择
javascript·vue.js·ecmascript
wefly201716 小时前
m3u8live.cn 在线M3U8播放器,免安装高效验流排错
前端·后端·python·音视频·前端开发工具
C澒17 小时前
微前端容器标准化 —— 公共能力篇:通用打印
前端·架构
德育处主任Pro17 小时前
前端元素转图片,dom-to-image-more入门教程
前端·javascript·vue.js
木斯佳17 小时前
前端八股文面经大全:小红书前端一二面OC(下)·(2026-03-17)·面经深度解析
前端·vue3·proxy·八股·响应式
陈天伟教授17 小时前
人工智能应用- 预测新冠病毒传染性:04. 中国:强力措施遏制疫情
前端·人工智能·安全·xss·csrf
叫我一声阿雷吧18 小时前
JS 入门通关手册(23):JS 异步编程:回调函数与异步本质
javascript·es6·前端面试·回调函数·回调地狱·js异步编程·异步本质
zayzy18 小时前
前端八股总结
开发语言·前端·javascript