4 Star 84 Fork 47

编程小龙/electron-vue3-template

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
Language.vue 1.50 KB
一键复制 编辑 原始数据 按行查看 历史
编程小龙 提交于 2023-04-25 00:31 +08:00 . 多窗口多语言同步切换
<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>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/longzipeng/electron-vue3-template.git
git@gitee.com:longzipeng/electron-vue3-template.git
longzipeng
electron-vue3-template
electron-vue3-template
master

搜索帮助