使用vue3+js+ele-plus实现国际化

news2024/11/20 7:12:35

先看看是不是你想要的

本文只涉及到中文和英文两种语言,若需其他语言请到ele-plus官网进行下载
1、首先使用  npm i vue-i18n    命令下载i18n依赖包

npm i vue-i18n 

2、在views文件夹内新建一个i18n文件,在i18n文件夹内新建三个文件
2.1、新建 zh-cn.ts 文件

// 需要转为中文的语言包
export default {
    menu: { // 菜单
      expand: '扩大',
      collapse: '收缩',
      shouye: '首页',
      tableComponents: {
        tableComponents: '表格组件',
        sortableJs: 'sortableJs拖拽表格',
        protogenesis: '原生表格拖拽',
        search: '搜索',
        sign: '签名'
      }
    }
  }

 2.2、新建 en.ts 文件

 // 需要转为英文的语言包
export default {
    menu: { // 菜单
      expand: 'expand',
      collapse: 'collapse',
      shouye: 'home',
      tableComponents: {
        tableComponents: 'tableComponents',
        sortableJs: 'sortableJs',
        protogenesis: 'protogenesis',
        search: 'search',
        sign: 'sign'
      }
    }
  }
  


  2.3、再新建一个 index.ts 文件

  
  import { createI18n } from 'vue-i18n'
// 语言包
import zhCn from './zh-cn'
import en from './en'

const i18n = createI18n({
  legacy: false, // 设置为 false,启用 composition API 模式
  locale: 'zhCn', // 默认语言包为中文
  messages: {
    zhCn,
    en,
  }
})
export default i18n

3、将i18n挂载到全局,在main.ts文件内:

// 将需要转换为国际化的文件引入到main.ts文件,并注册
import i18n from './views/i18n'

app.use(i18n)

4、在使用到的页面进行使用

<template>
    <div class="header">
        <div class="header-right">
            <el-button :type="btnType === 'zhCn' ? 'primary' : ''" @click="changeLauage('zhCn')">中文</el-button>
            <el-button :type="btnType === 'zhCn' ? '' : 'primary'" @click="changeLauage('en')">English</el-button>
        </div>
    </div>
</template>

<script setup lang='js'>
    import { ref } from "vue";
    import { useStore } from '../../../store/index'
    import { getCurrentInstance } from 'vue'
    import { ElMessage } from 'element-plus'

    const btnType = ref('zhCn')
    const store = useStore()

    const changeLauage = (value) => {
        if (value === 'zhCn') {
            btnType.value = 'zhCn'
        } else {
            btnType.value = 'en'
        }
        handleCommand(value)
    }

const { proxy } = getCurrentInstance() // 获取当前正在执行的 Vue 组件实例的上下文信息
const handleCommand = (value) => {
  if (store.language === value) return
  proxy.$i18n.locale = value // 将当前语言赋值给local
  store.changeLang(value)
  ElMessage.closeAll()
  ElMessage.success(`${value === 'en' ? '英文' : '中文'}切换成功!`)
}
</script>

<style scoped>
    .header-right{
        display: flex;
        justify-content: end;
        margin: 15px;
    }
</style>

5、将选择的语言存储到piain里面 // 可存可不存

import { defineStore } from 'pinia'

export const useStore = defineStore('storeId', {
    state: () => {
      return {
        language: 'zhCn' // 默认语言包为中文
      }
    },
    getters: {
    },
    actions: {
      changeLang(data) {
        this.language = data
      },
    }
})

6、页面使用就直接
 {{ $t('menu.tableComponents.sign') }}即可,不需要在文件中引入i18n.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1899609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

14-33 剑和诗人7 - 大模型语言和 DBCopilot 方法实现数据民主化

长期以来&#xff0c;数据库一直是海量信息的守护者&#xff0c;但访问这些知识历来是只有拥有专业技术技能的人才能享有的特权。这造成了巨大的知识壁垒&#xff0c;阻碍了数据访问的民主化&#xff0c;并使许多个人和组织无法获得这些存储库中包含的见解。 数据民主化的主要…

Renesas R7FA8D1BH (Cortex®-M85) ADC模块应用

目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP和KEIL配置ADC 2.1 ADC硬件接口 2.2 FSP配置ADC 3 软件功能实现 3.1 FSP生成项目 3.2 FSP ADC模块库函数介绍 3.2.1 库函数列表 3.2.2 函数介绍 4 ADC功能代码 4.1 编写代码 4.2 代码…

无人机云台类型及作用

无人机云台主要分为三种类型&#xff1a; 单轴云台&#xff1a;仅支持单向旋转&#xff0c;适合拍摄平滑的延时摄影和全景照片。 双轴云台&#xff1a;支持水平和垂直旋转&#xff0c;可用于拍摄流畅的视频和运动物体。 三轴云台&#xff1a;全面支持所有旋转轴&#xff0c;…

ModuleNotFoundError: No module named ‘blinker._saferef‘

报错信息&#xff1a; 截图 代码 File "D:\Code\Python\flask-api\.venv\Lib\site-packages\seleniumwire\webdriver.py", line 28, in <module>from seleniumwire import backend, utilsFile "D:\Code\Python\flask-api\.venv\Lib\site-packages\selen…

充分利用东芝 TB67H450FNG 实现电机控制需求

在当今快速发展的技术环境中&#xff0c;高效且可靠的电机控制对于各种应用来说都是至关重要的&#xff0c;无论是工业机械还是消费电子产品。东芝的 TB67H450FNG&#xff0c;一款PWM斩波型直流有刷电机驱动器&#xff0c;以其高电压和大电流驱动能力脱颖而出&#xff0c;能够满…

[SAP ABAP] 函数Function

Function函数与子例程类似&#xff0c;按照功能将代码模块化 我们可以使用事务码SE37查看需要使用的函数以及对该函数进行测试 我们也可以对STRING_SPLIT_AT_POSITION函数进行测试 1.函数调用 我们可以使用事务码SE38进入ABAP编辑器界面&#xff0c;使用"模式/Pattern&q…

51单片机基础11——蓝牙模块控制亮灭

串口初试——蓝牙模块 蓝牙模块的使用1. 软硬件条件2. 蓝牙模块3. 代码(分文件处理之后的代码) 蓝牙模块的使用 1. 软硬件条件 单片机型号&#xff1a;STC89C52RC开发环境&#xff1a;KEIL4烧录软件串口通信软件&#xff1a;stc-isp蓝牙模块&#xff1a;HC-04LED模块(高电平点…

利用Redis bitmap 实现签到案例

数据库实现 设计签到功能对应的数据库表 CREATE TABLE sign_record (id bigint NOT NULL AUTO_INCREMENT COMMENT 主键,user_id bigint NOT NULL COMMENT 用户id,year year NOT NULL COMMENT 签到年份,month tinyint NOT NULL COMMENT 签到月份,date date NOT NULL COMMENT 签…

项目部署_持续集成_Jenkins

1 今日内容介绍 1.1 什么是持续集成 持续集成&#xff08; Continuous integration &#xff0c; 简称 CI &#xff09;指的是&#xff0c;频繁地&#xff08;一天多次&#xff09;将代码集成到主干 持续集成的组成要素 一个自动构建过程&#xff0c; 从检出代码、 编译构建…

HTML+CSS+JavaScript入门学习

目录 1. 前言2. HTML2.1 HTML简介2.2 HTML标签 3. CSS3.1 CSS知识整理及总结3.2 CSS之flex布局 4. JavaScript4.1 JavaScript知识整理及总结1-基础篇4.2 JavaScript知识整理及总结2-进阶篇 1. 前言 本文主要采用转载的形式&#xff0c;偶尔发现了一个比较不错的博客站点&#…

Java需要英语基础吗?

Java编程语言本身并不要求必须有很强的英语基础&#xff0c;因为Java的语法和逻辑是独立于任何特定语言的。我收集归类了一份嵌入式学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言类教学&am…

嵌入式linux面试1

1. linux 1.1. Window系统和Linux系统的区别 linux区分大小写windows在dos&#xff08;磁盘操作系统&#xff09;界面命令下不区分大小写&#xff1b; 1.2. 文件格式区分 windows用扩展名区分文件&#xff1b;如.exe代表执行文件&#xff0c;.txt代表文本文件&#xff0c;.…

短视频父亲:成都柏煜文化传媒有限公司

短视频父亲&#xff1a;镜头背后的温情与力量 在这个信息爆炸的时代&#xff0c;短视频以其短小精悍、直观生动的特点&#xff0c;迅速占据了人们碎片化的时间&#xff0c;成为情感交流与文化传播的重要平台。而在这些纷繁复杂的短视频中&#xff0c;有一类内容尤为触动人心—…

前缀和数组 差分数组

前缀和 一维&#xff1a;通过空间换时间适用于需要频繁查询某一段区间和的场景。 一维数组&#xff1a; 一维前缀和中的每一项&#xff1a; &#xff0c;该前缀和中的每一项也就是数组中对应的前 i 项和。 一维前缀和数组的构造&#xff1a; 在输入原数组时同步构造前缀和…

linux之管道重定向

管道与重定向 一、重定向 将原输出结果存储到其他位置的过程 标准输入、标准正确输出、标准错误输出 ​ 进程在运行的过程中根据需要会打开多个文件&#xff0c;每打开一个文件会有一个数字标识。这个标识叫文件描述符。 进程使用文件描述符来管理打开的文件&#xff08;FD--…

【proteus可调直流稳压电源LM317】2022-4-11

缘由直流稳压电源的设计。-编程语言-CSDN问答 缘由proteus电路仿真设计-嵌入式-CSDN问答 仿真是什么?就是可以恣意妄为,从错误中学习,电感量1安培1伏特1亨利,220亨利220伏特1安培.

数据库原理之并发控制的基本概念

我们今天继续来看数据库原理&#xff0c;我们简单讲讲数据库的并发控制。 并发控制的定义 并发控制是为了保证事务的隔离性和一致性&#xff0c;数据库管理系统需要对并发操作进行正确调度。并发控制的主要技术有&#xff1a;、时间戳、乐观控制法、多版本并发控制等。 并发操…

加入运动健康数据开放平台,共赢鸿蒙未来

HarmonyOS SDK运动健康服务&#xff08;Health Service Kit&#xff09;是为华为生态应用打造的基于华为帐号和用户授权的运动健康数据开放平台。在获取用户授权后&#xff0c;开发者可以使用运动健康服务提供的开放能力获取运动健康数据&#xff0c;基于多种类型数据构建运动健…

读人工智能全传04NP完全问题

1. 问题解决与搜索 1.1. 解决问题的能力无疑是区分人类和其他动物的关键能力之一 1.1.1. 解决问题是需要智慧的 1.2. 汉诺塔 1.2.1. 对于三个金环而言 1.2.1.1. 你不可能找到少于7次的解决方案了 1.2.2. 最初&#xff0c;我们只能选择移动最小的金环&#xff0c;只有将它…

【MySQL系列】VARCHAR 类型详解及其使用策略

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…