Vue3修改Element-plus语言与项目国际化

修改Element-plus默认语言

Element-plus默认语言是英语,可修改为其它语言;

此处 Element-plus 为自动按需导入方式配置;

更多导入方式:Vue3使用Element-plus-CSDN博客

全局配置默认语言参考:国际化 | Element Plus

统一固定设置

在 App.vue 引入 Element-plus 语言包,并使用 el-config-provider 标签

<script setup>
import { RouterView } from 'vue-router'
import { ElConfigProvider } from 'element-plus'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
</script><template><el-config-provider :locale="zhCn"><RouterView /></el-config-provider>
</template>

动态切换(示例)

仅作学习

<script setup>
import { ref, computed } from 'vue'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import en from 'element-plus/dist/locale/en.mjs'const language = ref(zhCn)
const locale = computed(() => (language.value === 'zh-cn' ? zhCn : en))const toggle = () => {language.value = language.value === 'zh-cn' ? 'en' : 'zh-cn'
}
</script><template><div><el-button @click="toggle">Switch Language</el-button><br /><el-config-provider :locale="locale"><el-table :data="[]" /><el-pagination :total="100" /></el-config-provider></div>
</template>

项目国际化

使用 vue-i18n 模块

安装依赖

npm i vue-i18n

创建文件

在 src 目录下创建 locales 目录,里面创建文件:en.js、zh-cn.js、index.js

// en.jsexport default {login: {title: 'Login Form',logIn: 'Login',username: 'Username',password: 'Password'}
}
// zh-cn.jsexport default {login: {title: '系统登录',logIn: '登录',username: '账号',password: '密码'}
}
// index.jsimport { createI18n } from 'vue-i18n'
import elEnLocale from 'element-plus/es/locale/lang/en'
import elZhLocale from 'element-plus/es/locale/lang/zh-cn'
import enLocale from './en'
import zhLocale from './zh-cn'const messages = {en: {...enLocale,...elEnLocale},'zh-cn': {...zhLocale,...elZhLocale}
}export const getLocale = () => {// 获取缓存const storLanguage = localStorage.getItem('language')// 存在返回当前语言if (storLanguage) return storLanguage// 不存在 获取系统语言const language = (navigator.language || navigator.browserLanguage).toLowerCase()const locales = Object.keys(messages)for (const locale of locales) {if (language.indexOf(locale) > -1) {return locale}}// 默认返回简体中文return 'zh-cn'
}
const i18n = createI18n({globalInjection: true,legacy: false,locale: getLocale(),messages: messages
})
export default i18n

编辑 main.js

挂载 locales/index.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import i18n from '@/locales/index'const app = createApp(App)app.use(router)
app.use(i18n)app.mount('#app')

编辑 App.vue

在 App.vue 使用 el-config-provider 标签配置

<script setup>
import { RouterView } from 'vue-router'
import { ElConfigProvider } from 'element-plus'
import { useI18n } from 'vue-i18n'
const { locale, messages } = useI18n()
</script><template><el-config-provider :locale="messages[locale]"><RouterView /></el-config-provider>
</template>

创建组件

在 components 创建一个 language.vue 组件

<script setup>
import { useI18n } from 'vue-i18n'
const { locale } = useI18n()
const languages = [{ name: 'English', value: 'en' },{ name: '中文', value: 'zh-cn' }
]
const handleSetLanguage = (lang) => {locale.value = langlocalStorage.setItem('language', lang)
}
</script><template><el-button type="" v-for="item in languages" :key="item.value" @click="handleSetLanguage(item.value)">{{ item.name }}</el-button>
</template>

使用组件

在页面 home.vue 使用 language.vue 组件并使用前面配置好的语言;

<script setup>
import LangSelect from '@/components/lang_select/langSelect.vue'
import { reactive } from 'vue'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const form = reactive({name: ''
})
</script><template><LangSelect /><div style="margin: 50px">{{ t('login.title') }}</div><el-form :model="form" label-width="120px"><el-form-item :label="t('login.username')"><el-input v-model="form.name" :placeholder="t('login.username')" /></el-form-item></el-form><div><el-table :data="[]" /><el-pagination :total="100" /></div>
</template>

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

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

相关文章

文件对比工具Beyond Compare 4 mac v4.4.7(28397)中文版

Beyond Compare是一款适用于Windows、Mac OS X和Linux平台的文件和文件夹比较工具。它可以帮助用户比较和同步文件夹、文件和压缩包等内容&#xff0c;支持多种文件格式&#xff0c;如文本、图像、音频、视频等。 软件下载&#xff1a;Beyond Compare 4 mac v4.4.7(28397)中文版…

Kafka中的acks机制——一次由错误资料引发的源码学习

前言 这次的学习过程来历有点奇怪。我本来是学习kafka过程中正常的学到了这个acks机制&#xff0c;但是发现很多地方写的都不太明白。因此决定还是自己来看一下源码。 具体来说&#xff1a;请看搜索结果&#xff08;Google引擎&#xff09; 这个是搜索“Kafka的ack”所得到的…

Excel中使用ROW函数自动更新行号或编号

操作步骤&#xff1a; 1、在编号“1”的单元格输入公式“ROW()-1”&#xff1b; 2、在上一步填好公式的单元格基础上下拉填充&#xff0c;即可批量得到编号&#xff0c;如果删掉其中的一行或几行&#xff0c;编号会自动进行更新。

数组与list的转化分析

一、相互转换的方法 1. 数组转List &#xff0c;使用JDK中java.util.Arrays工具类的asList方法。 2. List转数组&#xff0c;使用List的toArray方法。无参toArray方法返回 Object数组&#xff0c;传入初始化长度的数组对象&#xff0c;返回该对象数组。 二、分析修改内容的影响…

在 Rust 中实现 TCP : 1. 联通内核与用户空间的桥梁

内核-用户空间鸿沟 构建自己的 TCP栈是一项极具挑战的任务。通常&#xff0c;当用户空间应用程序需要互联网连接时&#xff0c;它们会调用操作系统内核提供的高级 API。这些 API 帮助应用程序 连接网络创建、发送和接收数据&#xff0c;从而消除了直接处理原始数据包的复杂性。…

【教3妹学编程-算法题】标记所有下标的最早秒数 II

3妹&#xff1a;2哥2哥&#xff0c;你有没有看到上海女老师出轨男学生的瓜啊。 2哥 : 看到 了&#xff0c;真的是太毁三观了&#xff01; 3妹&#xff1a;是啊&#xff0c; 老师本是教书育人的职业&#xff0c;明确规定不能和学生谈恋爱啊&#xff0c;更何况是出轨。 2哥 : 是啊…

shell 免交互ecxept样例

语法 expect [选项] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ] 选项 -c&#xff1a;从命令行执行expect脚本&#xff0c;默认expect是交互地执行的 示例&#xff1a;expect -c expect "\n" {send "pressed enter\n"} -d&#xff1a;输出调试信息 …

【Qt学习】QTextEdit 与 QComboBox 的 属性与实例(槽函数的使用、读取本机内容到控件)

文章目录 1. QTextEdit2.1 介绍2.2 实例使用 - 槽函数的使用 2. QComboBox2.1 介绍2.2 实例使用案例1&#xff1a;设置下拉框项目组件的方式案例2&#xff1a;读取本机文件内容 到QComboBox 1. QTextEdit 2.1 介绍 我们可以查阅官方文档&#xff0c;对QTextEdit 有更深的了解&…

源码安装nginx保姆级教程

一.目录存放 1./usr/lib/syste,md/system/:每个服务最主要的启动脚本设定 2. /run/systemd/system/&#xff1a;系统执行过程中所产生的服务脚本&#xff0c;这些脚本的优先序要比 /usr/lib/systemd/system/ 高&#xff01; 3./etc/systemd/system/&#xff1a;管…

【java 基础】闲话 ClassLoader 和 SPI (一)

文章目录 引子双亲委派模型你真的明白了吗&#xff1f; 双亲委派“不够用了”SPI机制 其他琐碎 引子 有别于 java 提供的 IO 模块&#xff0c;java 中的classloader主要是用来加载类的&#xff0c;当然除了加载类&#xff0c;也可以加载资源文件。 那么首先我们会问一个问题&…

java基础 - 14 Java的Deque之Deque、BlockingDeque、LinkedBlockingDeque、ArrayDeque

Java 中的 Deque&#xff08;双端队列&#xff09;是一种具有队列和栈特性的数据结构&#xff0c;它允许在两端进行插入和删除操作。Deque 接口是 Java 集合框架中的一部分&#xff0c;它定义了双端队列的基本操作。 BlockingDeque 接口&#xff1a; BlockingDeque 接口是 Deq…

docker搭建git服务器

1、docker搭建git服务器 总体思路&#xff1a;服务端通过docker搭建git服务器&#xff0c;客户端创建git的账户及公钥密钥&#xff1b; 1&#xff09;服务端# 创建容器 # --privileged 获得完整的root权限 # /usr/sbin/init 启动容器执行的第一个命令 以便可以使用systemctl命…

2024年FPGA可以进吗

2024年&#xff0c;IC设计FPGA行业仍有可能是一个极具吸引力和活力的行业&#xff0c;主要原因包括&#xff1a; 1. 技术发展趋势&#xff1a;随着5G、人工智能、物联网、自动驾驶、云计算等高新技术的快速发展和广泛应用&#xff0c;对集成电路尤其是高性能、低功耗、定制化芯…

【UE 材质】制作加载图案(2)

在上一篇&#xff08;【UE 材质】制作加载图案&#xff09;基础上继续实现如下效果的加载图案 效果 步骤 1. 复制一份上一篇制作的材质并打开 2. 添加“Floor”节点向下取整 除相同的平铺数 此时的效果如下 删除如下节点 通过“Ceil”向上取整&#xff0c;参数“Tiling”默认…

教师招聘和事业编d类有什么区别吗

每年都有大批怀揣教育梦想的年轻人&#xff0c;站在职业的十字路口&#xff0c;对未来充满期许与疑惑。他们中的许多人都会面临这样一个问题&#xff1a;教师招聘和事业编D类&#xff0c;到底有什么区别&#xff1f;今天&#xff0c;就让我来为你揭开这两者的神秘面纱。 别被这…

【大数据】Flink SQL 语法篇(五):Regular Join、Interval Join

《Flink SQL 语法篇》系列&#xff0c;共包含以下 10 篇文章&#xff1a; Flink SQL 语法篇&#xff08;一&#xff09;&#xff1a;CREATEFlink SQL 语法篇&#xff08;二&#xff09;&#xff1a;WITH、SELECT & WHERE、SELECT DISTINCTFlink SQL 语法篇&#xff08;三&…

ubuntu系统下大数据服务器磁盘调优测试记录

一、背景 在kvm虚拟机ubuntu操作系统大数据平台测试的过程中&#xff0c;遭遇了磁盘I/O性能的瓶颈&#xff0c;因有cpu绑核操作&#xff0c;故有做隔核操作验证是否是绑核影响的磁盘I/O&#xff0c;后又对磁盘进行透传以及挂内存盘等操作&#xff1b; 二、磁盘介绍 2.1 磁盘…

『NLP学习笔记』图解 BERT、ELMo和GPT(NLP如何破解迁移学习)

图解 BERT、ELMo和GPT(NLP如何破解迁移学习) 文章目录 一. 前言二. 示例-句子分类三. 模型架构3.1. 模型输入3.2. 模型输出四. BERT VS卷积神经网络五. 词嵌入新时代5.1. 简要回顾词嵌入Word Embedding5.2. ELMo: 上下文语境很重要5.2.1. ELMo的秘密是什么?5.3. ULM-FiT:将迁…

蓝桥杯Python B组练习——斐波那契数列

一、题目 定义 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列&#xff0c;因数学家莱昂纳多斐波那契&#xff08;Leonardo Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为“兔子数列”&#xff0c;指的是这样一个数…

Linux x86平台获取sys_call_table

文章目录 前言一、根据call *sys_call_table来获取二、使用dump_stack三、根据MSR_LSTAR寄存器四、使用sys_close参考资料 前言 Linux 3.10.0 – x86_64 最简单获取sys_call_table符号的方法&#xff1a; # cat /proc/kallsyms | grep sys_call_table ffffffff816beee0 R sy…