UI组件库和内容文字的中英文切换

devtools/2024/9/25 15:19:50/

同时实现UI组件库(这里以ElementPlus为例)和内容文字的中英文切换

1. 安装vueI18n和element-plus

pnpm i vue-i18n  element-plus

2. 然后在项目中src目录下新建lang文件夹,里面新建en.ts和zh.ts还有index.ts

index.ts

javascript">import { createI18n } from 'vue-i18n'
import en from './en'
import zh from './zh'
import type { App } from 'vue'const messages = { en, zh }const localeData = {globalInjection: true, // 如果设置true, $t() 函数将注册到全局legacy: false, // 如果想在composition api中使用需要设置为falselocale: localStorage.getItem('lang') || 'zh', // 当前选择的语言messages, // set locale messages
}export const i18n = createI18n(localeData)export const setupI18n = {install(app: App) {app.use(i18n)},
}

en.ts

javascript">export default {router: {Dashboard: 'homePage',},
}

zh.ts

javascript">export default {router: {Dashboard: '首页',},
}

3. 在mian.ts中进行注册使用

e3c5f5d3cc074d2fb5a9f06154db344f.png

// ElementPlus

import ElementPlus from 'element-plus'

import 'element-plus/dist/index.css'

// vuei18n

import { setupI18n } from '@/lang'

const app = createApp(App)

app.use(ElementPlus)

app.use(setupI18n)

4. 在pinia中新增处理语言的逻辑

config.ts

javascript">import { defineStore } from 'pinia'
import { i18n } from '@/lang'
import { ref } from 'vue'export const useConfigStore = defineStore('config', () => {// 当前语言let language = ref(localStorage.getItem('lang') || 'zh')// 设置语言const setLanguage = (lang: string) => {const { locale }: any = i18n.globallanguage.value = langlocale.value = lang}return {language,setLanguage,}
})

index.ts

javascript">import { useConfigStore } from './config'export { useConfigStore }

5. 修改App.vue文件

javascript"><template><el-config-provider :locale="lang[language]"><RouterView /></el-config-provider>
</template><script setup lang="ts">
import { computed } from 'vue'
import { ElConfigProvider } from 'element-plus'
import { RouterView } from 'vue-router'
import { useConfigStore } from './stores'
import zh from 'element-plus/es/locale/lang/zh-cn'
import en from 'element-plus/es/locale/lang/en'const configStore = useConfigStore()const language = computed(() => configStore.language)const lang: any = { zh, en }
</script>

此时就完成了中英文切换的功能,我们进行测试一下

  • 点击按钮,传入相应的语言即可。
javascript"><template><el-button @click="changeLanguage('zh')">中文</el-button><el-button @click="changeLanguage('en')">英文</el-button><el-paginationv-model:current-page="currentPage4"v-model:page-size="pageSize4":page-sizes="[100, 200, 300, 400]":small="small":disabled="disabled":background="background"layout="total, sizes, prev, pager, next, jumper":total="400"/>{{ $t('router.Dashboard') }}
</template><script lang="ts" setup>
import { ref } from 'vue'
import { useConfigStore } from '@/stores'const configStore = useConfigStore()const currentPage4 = ref(4)
const pageSize4 = ref(100)
const small = ref(false)
const background = ref(false)
const disabled = ref(false)const changeLanguage = (language: 'zh' | 'en') => {configStore.setLanguage(language)
}
</script>

测试结果:

a852b883ee7b49de9f7eedfaba0b2205.png

3e2e4a0b60c24b7492e260ca8186519d.png


http://www.ppmy.cn/devtools/38742.html

相关文章

杨辉三角的打印

题目内容&#xff1a; 在屏幕上打印杨辉三角。 思路&#xff1a; 首先我们通过观察发现&#xff0c;每一步的打印都与行列数有关&#xff0c;中间的数据由这一列和上一行的前一列数据控制。所以我们可以使用二维数组进行操作&#xff1a; &#xff08;&#xff11;&#xff…

蓝桥杯省三爆改省二,省一到底做错了什么?

到底怎么个事 这届蓝桥杯选的软件测试赛道&#xff0c;都说选择大于努力,软件测试一不卷二不难。省赛结束&#xff0c;自己就感觉稳啦&#xff0c;全部都稳啦。没想到一出结果&#xff0c;省三&#xff0c;g了。说落差&#xff0c;是真的有一点&#xff0c;就感觉和自己预期的…

【使用ChatGPT的API之前】OpenAI API提供的可用模型

文章目录 一. ChatGPT基本概念二. OpenAI API提供的可用模型1. InstructGPT2. ChatGPT3. GPT-4 三. 在OpenAI Playground中使用GPT模型-ing 在使用GPT-4和ChatGPT的API集成到Python应用程序之前&#xff0c;我们先了解ChatGPT的基本概念&#xff0c;与OpenAI API提供的可用模型…

通过QT自动生成的gitignore文件来说明用法

下面是QtCreator自动生成的gitignore原始文件&#xff0c;通过这个文件来说明gitignore的通配符的用法 其实这个文件用到的知识点只有下面几个&#xff1a; #开头的部分表示注释 *~表示忽略所有以~结尾的文件 *匹配所有的字符0次或者多次 core 表示忽略core文件和文件夹 !c…

网工路由基础——静态路由

一、静态路由的定义 静态路由是一种需要管理员手动配置的特殊路由。 二、静态路由的目的或背景 1&#xff09;当网络结构比较简单时&#xff0c;只需要配置静态路由就可以使网络正常工作&#xff1b; 2&#xff09;在复杂网络中&#xff0c;配置静态路由可以改进网络的性能&am…

win10 远程桌面无法连接,解决Win10远程桌面无法连接问题的方法

Windows 10操作系统中&#xff0c;远程桌面是一项非常实用的功能&#xff0c;它允许用户从另一台设备远程访问和控制另一台计算机。然而&#xff0c;有时候用户可能会遇到Win10远程桌面无法连接的问题。本文将探讨可能导致这个问题的原因&#xff0c;并提供相应的解决方案。 确…

如何让加快OpenHarmony编译速度?

OpenHarmony 有两种编译方式&#xff0c;一种是通过 hb 工具编译&#xff0c;一种是通过 build.sh 脚本编译。本文笔者将提升 build.sh 方式编译速度的方法整理如下&#xff1a; 因为笔者只用 build.sh 脚本编译&#xff0c;没用过 hb 工具&#xff0c;好像下面的选项也可以用于…

设计模式之拦截过滤器模式

想象一下&#xff0c;在你的Java应用里&#xff0c;每个请求就像一场冒险旅程&#xff0c;途中需要经过层层安检和特殊处理。这时候&#xff0c;拦截过滤器模式就化身为你最可靠的特工团队&#xff0c;悄无声息地为每一个请求保驾护航&#xff0c;确保它们安全、高效地到达目的…