vue3 自定义国际化、elementPlus国际化

自定义国际化

1. 引入 vue-i18n 插件 pnpm install vue-i18n@next
2. 页面添加语言文件目录,添加自定义的语言文件

在这里插入图片描述

3.语言目录里添加 index.ts, 内容如下
import { createI18n } from "vue-i18n";// 自定义语言文件
import zhCN from "@/locales/zh-CN";
import en from "@/locales/en";const language = (navigator.language || 'en').toLocaleLowerCase() // 这是获取浏览器的语言
const i18n = createI18n({legacy: false, // 是否使用 composition API 模式locale: localStorage.getItem('locales') || language.split('-')[0] || 'zhCN', // 首先从缓存里拿,没有的话就用浏览器语言, "zhCN",fallbackLocale: 'zhCN', // 设置备用语言messages: {zhCN,en}
});export default i18n;
4. main.ts 中注册
import i18n from "./plugins/vueI18n";
app.use(i18n);

页面模板中可直接通过 $t('xxx')来实现显示语言
在这里插入图片描述

5.修改语言 修改 vue-i18n 提供的 locale 变量
<script lang='ts' setup>
import { useI18n } from "vue-i18n";
const { locale } = useI18n({ useScope: "global" });
// 切换语言
const onMenuSelect = (key: string, keyPath: string[]) => {if (key == "lan-zh") {locale.value = "zhCN";saveLocales(locale.value);localsChangedNotify(locale.value);} else if (key == "lan-en") {locale.value = "en";saveLocales(locale.value);localsChangedNotify(locale.value);}
};
</script>

elementPlus 国际化

1. App.vue

使用 elementPlus 的 el-config-provider 进行最外层包裹

<template><el-config-provider :locale="locale"><router-view /></el-config-provider>
</template>
<script lang="ts" setup>import { onMounted, ref, computed } from "vue";import zhCn from "element-plus/es/locale/lang/zh-cn";
import en from "element-plus/es/locale/lang/en";import { languageSet } from "@/plugins/vueI18n";const language = ref(languageSet()); // 初始默认值
const locale = computed(() => (language.value === "zhCN" ? zhCn : en));// 监听语言的切换,设置 language 值,从而实现 elementPlus 组件语言的切换
window.addEventListener("onLocalsChanged", (e: any) => {language.value = e.detail;
});
</script>
2. 语言切换的地方,添加自定义事件派送

const localsChangedNotify = (value: string) => {const event = new CustomEvent("onLocalsChanged", { detail: value });window.dispatchEvent(event);
};// 切换语言
const onMenuSelect = (key: string, keyPath: string[]) => {if (key == "lan-zh") {locale.value = "zhCN";saveLocales(locale.value);localsChangedNotify(locale.value);} else if (key == "lan-en") {locale.value = "en";saveLocales(locale.value);localsChangedNotify(locale.value);}
};

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器端口怎么查,服务器端口查看方法详解

服务器端口是网络通信的关键组件&#xff0c;对于网络管理员和系统管理员来说&#xff0c;了解和掌握如何查看服务器端口是非常重要的。接下来介绍两种常用的方法来查看服务器端口。 方法一&#xff1a;使用命令提示符&#xff08;CMD&#xff09; 1. 首先&#xff0c;点击电脑…

本地搭建springboot服务并实现公网远程调试本地接口

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

漫威争锋Marvel Rivals锁区怎么办 锁区怎么搜索教程

即将面世的《漫威争锋》&#xff08;Marvel Rivals&#xff09;&#xff0c;一款备受瞩目的PvP射击游戏&#xff0c;是与漫威官方携手的杰作&#xff0c;并将于5月11日早上9点正式启动其封闭Alpha测试环节&#xff0c;这一测试阶段将持续整整十天。在初次测试的盛宴中&#xff…

单位圆内的正交向量多项式,第一部分:由Zernike多项式的梯度导出的基组

clear all; close all; clc; %% I1=double(imread(E:\zhenlmailcom-E8E745\华为家庭存\image\imgs\right\0.bmp)); I2=double(imread(E:\zhenlmailcom-E8E745\华为家庭存储\.法\image\imgs\right\1.bmp)); I3=double(imread(E:\zhenlmailcom-E8E745\华为家庭存储\.p\image\imgs…

笔记本【记录每日坑点】

用来记录工作中遇到的问题 目录 引用数据类型的相互影响事件捕获导致的错误触发事件 引用数据类型的相互影响 类似如下代码&#xff1a; const obj {a: 1, b: 2};const array [];for(let i 0; i<4; i){array.push(obj)}array[0].a fixconsole.log(array);将已定义的对象…

PyQt5 解决界面无响应方案

文章目录 前言版本案例解决方案QThreadQTimer 局部变量创建异步线程导致 UI 未响应如果 QTimer 不使用 self.time 写法 个人简介 前言 在PyQt5中&#xff0c;GUI线程通常指的是Qt的主事件循环线程&#xff0c;也称为主线程。主线程负责处理GUI事件、更新UI界面等任务。在PyQt5…

【ETAS CP AUTOSAR工具链】RTA-OS基本概念与开发流程

RTA-OS基于早期ETAS操作系统的成熟技术&#xff0c;迄今为止&#xff0c;已在全球超过3.5亿个ECU中使用。RTA-OS是一个可静态配置的抢占式实时操作系统(RTOS)&#xff0c;它常被用于资源受限但有着高性能要求的方案中。内核的实现不仅遵循了AUTOSAR R3.x、R4.0、R4.1、R4.2、R4…

科学碳目标(SBTI)认证是什么?

科学碳目标&#xff08;SBTI&#xff09;认证是一种基于科学的减排目标认证和监测体系&#xff0c;旨在确保企业和国家制定的减排目标符合科学标准&#xff0c;并且能够实现全球气候目标的减缓效应。这个认证体系由全球碳项目和世界资源研究所&#xff08;WRI&#xff09;共同开…

视频号小店怎么做?店铺运营详细步骤讲解,全网独家

大家好&#xff0c;我是电商笨笨熊 视频号小店作为今年的电商黑马&#xff0c;下一个站在风口的项目&#xff0c;自是吸引了不少的玩家&#xff1b; 先不说视频号自身庞大的流量体系&#xff0c;单单是高客单的市场就值得尝试一把&#xff1b; 且当前视频号小店刚刚推出不久…

SolidWorks教育版本好用吗?

SolidWorks教育版本&#xff0c;作为一款专为教育领域设计的三维CAD软件&#xff0c;以其直观易用的界面、强大的功能以及丰富的教育资源&#xff0c;受到了广大师生的青睐。那么&#xff0c;SolidWorks教育版本好用吗&#xff1f;答案是肯定的。 首先&#xff0c;SolidWorks教…

【工具】如何提取一个mp4文件的关键帧

文章目录 怎么做如何安装ffmepgUbuntu 或 DebianCentOS 或 FedoramacOSWindows其他 Linux 发行版 实践什么是关键帧 怎么做 你可以使用ffmpeg这个强大的多媒体处理工具来提取mp4文件中的关键帧。以下是一个示例命令&#xff0c;可以使用ffmpeg从mp4文件中提取关键帧&#xff1…

网络编程基础回顾

计算机网络&#xff08;5&#xff09;&#xff1a;运输层 OSI 模型与 TCP/IP 协议 OSI七层协议模型 (open system interconnection) 应用层&#xff1a;为应用数据提供服务表示层&#xff1a;数据格式转化&#xff0c;数据加密会话层&#xff1a;建立、维护和管理会话传输层&…