代码拉取完成,页面将自动刷新
<template>
<el-dropdown @command="handleCommand">
<span class="el-dropdown-link">
{{ langMap.languageMap.get(currentLang) }}
<el-icon class="el-icon--right">
<arrow-down />
</el-icon>
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item
:command="langEntry[0]"
:key="langEntry[0]"
:disabled="currentLang == langEntry[0]"
v-for="langEntry in langMap.languageMap.entries()"
>{{ langEntry[1] }}</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
</template>
<script lang="ts" setup>
import { ArrowDown } from "@element-plus/icons-vue";
import { useI18n } from "vue-i18n";
import { computed } from "vue";
import langMap from "@/locales/langMap";
import cacheUtils from "@/utils/cacheUtils";
import { useAppStore } from "@/store/modules/appStore";
import { ipcRenderer } from "electron";
const appStore = useAppStore();
const i18n = useI18n();
// 计算属性获取i18n的值
const currentLang = computed(() => i18n.locale.value);
// 切换语言
function handleCommand(lang: string) {
i18n.locale.value = lang;
// 设置缓存的值
cacheUtils.set("lang", lang);
// 更新全局状态
appStore.lang = lang;
// 主进程通知其他窗口同步修改语言
ipcRenderer.invoke("lang:change", lang);
}
</script>
<style scoped>
.example-showcase .el-dropdown-link {
cursor: pointer;
color: var(--el-color-primary);
display: flex;
align-items: center;
}
</style>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。