vue+ts+vite+pinia+element plus+i18n国际化

news2025/1/10 23:47:47

第一步,安装vue-i18n(我这里版本是9.2.2)

 npm install vue-i18n element-plus --save

第二步,src文件夹下创建language文件夹,目录如下

第三步,定义本地中文英文

 en.ts

// en.ts
export default {
  message: {
    analyse: 'analyse',
    data: 'data',
    projectManagement: 'Project Management',
    systemSetup: 'system setup'

  }
}

zh.ts

export default {
  message: {
    analyse: '分析',
    data: '数据',
    projectManagement: '项目管理',
    systemSetup: '系统设置'
  }
}

i18n.ts

import { createI18n } from 'vue-i18n'
import zh from './zh'
import en from './en'

const i18n = createI18n({
  legacy: false,
  locale: 'zh',
  messages: {
    zh,
    en
  }
})

export default i18n

第四步,main.ts中引入使用

// 国际化

import i18n from './language/i18n'

app.use(i18n)

第五步,pinia状态管理

src文件夹下创建store文件(状态管理)

store下创建index.ts文件

import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
import zh from "element-plus/lib/locale/lang/zh-cn";
import en from "element-plus/lib/locale/lang/en";
import i18n from '@/language/i18n'
export const useCounterStore = defineStore('counter', () => {
  // 变量
  const count = ref(zh)
  // 计算属性
  const doubleLang = computed(() => {
    if (localStorage.getItem('language')) {
      if (localStorage.getItem('language') === 'en') {
        i18n.global.locale.value = 'en'
        return en
      } else {
        i18n.global.locale.value = 'zh'
        return zh
      }
    }
  })

  // 方法action
  function incrementLang(data: string) {
    console.log(data, i18n)
    if (data === 'zh') {
      lang.value = zh
      i18n.global.locale.value = data
      localStorage.setItem('language', data)
    } else if (data === 'en') {
      lang.value = en
      i18n.global.locale.value = data
      localStorage.setItem('language', data)
    }
  }

  return { count, increment, doubleCount }
})
export default useCounterStore

第六步,设置全局

在项目app.vue文件中,引入el-config-provider(详情参考element plus)

<script setup lang="ts">
import { useCounterStore } from '@/store/index'
const storea = useCounterStore()
const locale = storea.doubleLang;
console.log(locale);



</script>

<template>
  <el-config-provider :locale="locale">
    <router-view></router-view>
  </el-config-provider>
</template>

<style scoped>

第七步,使用国际化(这边以项目头部为例,国际化语言切换也在头部)

<script setup lang="ts">
import { ref } from 'vue'
// pinia管理语言
import { useCounterStore } from '@/store/index'
const storea = useCounterStore()
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const langVa = ref('zh')
langVa.value = localStorage.getItem('language') || 'zh'
//设置语言
const handleCommand = (command: string | number | object) => {
  langVa.value = command as string
  storea.increment(command as string)

}


</script>

<template>
  <div>
<!-- 使用方式 -->
    <div>{{ t('message.data') }}</div>
    <div>
      <el-dropdown szie="medium" v-model="langVa" @command="handleCommand">
        <svg-icon name="test" style="font-size: 18px; margin-top: 5px" />
        <template #dropdown>
          <el-dropdown-item command="zh" v-if="langVa !== 'zh'">简体中文</el-dropdown-item>
          <el-dropdown-item command="en" v-if="langVa !== 'en'">English</el-dropdown-item>
        </template>
      </el-dropdown>
    </div>
   

  </div>
</template>

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

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

相关文章

UE DTCmd 插件说明

Exec CMD Exec CMD (Have Process) 在蓝图非阻塞的运行Windows命令行并输出返回值&#xff0c;而且可以时时监听输出内容。 可以直接运行某个程序&#xff08;输入程序完整路径&#xff09; 可以直接运行bat脚本&#xff0c;并在bat脚本里面运行你任何想做的操作。 Cmd : 需要…

花30分钟,我用ChatGPT写了一篇2000字文章(内附实操过程)

有了ChatGPT之后&#xff0c;于我来说&#xff0c;有两个十分明显的变化&#xff1a; 1. 人变的更懒 因为生活、工作中遇到大大小小的事情&#xff0c;都可以直接找ChatGPT来寻求答案。 2. 工作产出量更大 之前花一天&#xff0c;甚至更久才能写一篇原创内容&#xff0c;现…

【MySQL--04】数据类型

文章目录1.数据类型1.1数据类型分类1.2数值类型1.2.1tinyint类型1.2.2bit类型1.2.3小数类型1.2.3.1 float1.2.3.2 decimal1.3字符串类型1.3.1 char1.3.2 varchar1.3.3char和varchar的比较1.4日期和时间类型1.5 enum和set1.5.1 enum1.5.2 set1.5.3 示例1.数据类型 1.1数据类型分…

试题E:蜂巢 ——蓝桥杯第十三届省赛Java 大学A组

试题E&#xff1a;蜂巢 解析 很明显的一道坐标计算问题&#xff0c;只是通过看似比较复杂的描述而已。 题目定义了一种行走方向&#xff0c;大概就是一共六种行走方向&#xff0c;如果以o为原点&#xff0c;建立坐标系&#xff0c;那么方向0和3就是x轴。其他方向为分力即可&am…

【微信小程序】免费的高德地图api——获取天气(全过程)

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

硬件工程师需要掌握的PCB设计常用知识点

一个优秀的硬件工程师设计的产品一定是既满足设计需求又满足生产工艺的&#xff0c;某个方面有瑕疵都不能算是一次完美的产品设计。规范产品的电路设计&#xff0c;工艺设计&#xff0c;PCB设计的相关工艺参数&#xff0c;使得生产出来的实物产品满足可生产性、可测试性、可维修…

Windows 安装 Go1.20.3 顺便了解 go env 环境变量

文章目录1.下载与安装2.GOROOT3.Go 的包管理3.1 GOPATH 模式3.2 Go Modules 模式4.GOPATH5.GO111MODULE6.GOPROXY7.GOSUMDB8.GONOPROXY/GONOSUMDB/GOPRIVATE9.GOMODCACHE10.GOCACHE11.GOENV12.GOBIN13.参考资料1.下载与安装 参考文章&#xff1a;Golang V1.19.1 安装配置 (win…

Vue3带来了什么

目录性能方面的优化更好的TypeScript集成用于处理大规模用例的新API分层内部模块CompositionAPI更多RFC提供的两个新功能proxy代替defineProperty双向绑定性能方面的优化 首先是相对Vue2的一些性能改进&#xff1a; 通过摇树(减轻了多达41&#xff05;的资源大小)初始渲染&am…

Hadoop安装Hbase启动失败报错解决方法

先进入hbase文件目录里看日志文件看看报什么错再具体解决&#xff1a; vim /opt/module/hbase-1.3.3/logs/hbase-root-master-hadoop-single.log 1.报错org.apache.hadoop.security.AccessControlException: Permission denied: user异常解决方法 1、第一种 在hdfs的配置文件…

3.2 二维随机变量的边缘分布

思维导图&#xff1a; 学习目标&#xff1a; 要学习二维随机变量的边缘分布&#xff0c;我可能会按照以下步骤进行学习&#xff1a; 理解二维随机变量的概念和表示方法&#xff0c;包括联合分布函数和联合分布律等概念。理解二维随机变量的边缘分布的概念和意义&#xff0c;即…

2023年4月份北京/广州/深圳DAMA-CDGP数据治理专家证书收益

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

Mysql的学习与巩固:一条SQL查询语句是如何执行的?

前提 我们经常说&#xff0c;看一个事儿千万不要直接陷入细节里&#xff0c;你应该先鸟瞰其全貌&#xff0c;这样能够帮助你从高维度理解问题。同样&#xff0c;对于MySQL的学习也是这样。平时我们使用数据库&#xff0c;看到的通常都是一个整体。比如&#xff0c;你有个最简单…

【华为机试真题详解JAVA实现】—MP3光标位置

目录 一、题目描述 二、解题代码 一、题目描述 MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲。为了简化处理,假设每屏只能显示4首歌曲,光标初始的位置为第1首歌。 现在要实现通过上下键控制光标移动来浏览歌曲列…

[2022 SP] Copy, Right? 深度学习模型版权保护的测试框架

Copy, Right? A Testing Framework for Copyright Protection of Deep Learning Models | IEEE Conference Publication | IEEE Xplore 摘要 深度学习模型&#xff0c;尤其是那些大规模和高性能的模型&#xff0c;训练成本可能非常高&#xff0c;需要大量的数据和计算资源。…

DDS介绍

今天我们一起来了解一个中间件协议框架DDS&#xff0c;它的全称是Data Distribution Service&#xff0c;是一套通信协议和API标准&#xff0c;提供了以数据为中心的连接服务&#xff0c;基于发布者-订阅者模型&#xff0c;提供了介于操作系统和应用程序之间的功能&#xff0c;…

【数据结构】二叉树性质巩固

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a;初阶数据结构 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对…

Shell基础了解

一.Shell简介 Shell 是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 Shell 是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问操作系统内核的服务。 Ken…

JavaScript【二】JavaScript中的流程控制

文章目录&#x1f31f;前言&#x1f31f;流程控制&#x1f31f;选择结构(条件判断)&#x1f31f;if分支&#x1f31f; switch 分支(多选一的条件判断)&#x1f31f;循环结构&#x1f31f;for&#x1f31f;while&#x1f31f; do...while&#x1f31f;区别&#x1f31f;break和c…

从元宇宙婚礼和元宇宙游戏看元宇宙的“史前时代”

元宇宙&#xff0c;正在从科幻走进现实——确切地说&#xff0c;是走进现实中的虚拟世界。这一切&#xff0c;离不开强有力的高科技及其产品化基础设施设备的支撑。而且&#xff0c;元宇宙不会单由哪一家公司建成&#xff0c;也不会一蹴而就&#xff0c;它需要多方参与和一定的…

外包干了三年,算是废了...

先说一下自己的情况。大专生&#xff0c;19年通过校招进入湖南某软件公司&#xff0c;干了接近3年的测试&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了三年&#xff0c…