perf: 优化中英文翻译与切换

This commit is contained in:
xiaojunnuo
2025-06-28 23:57:01 +08:00
parent 082f47663d
commit acaa8b1731
43 changed files with 4121 additions and 4175 deletions
@@ -1,11 +1,11 @@
export { default as Breadcrumb } from './breadcrumb.vue';
export * from './check-updates';
export { default as AuthenticationColorToggle } from './color-toggle.vue';
export * from './global-search';
export { default as LanguageToggle } from './language-toggle.vue';
export { default as AuthenticationLayoutToggle } from './layout-toggle.vue';
export * from './lock-screen';
export * from './notification';
export * from './preferences';
export * from './theme-toggle';
export * from './user-dropdown';
export { default as Breadcrumb } from "./breadcrumb.vue";
export * from "./check-updates";
export { default as AuthenticationColorToggle } from "./color-toggle.vue";
export * from "./global-search";
export { default as LanguageToggle } from "./language-toggle.vue";
export { default as AuthenticationLayoutToggle } from "./layout-toggle.vue";
export * from "./lock-screen";
export * from "./notification";
export * from "./preferences";
export * from "./theme-toggle";
export * from "./user-dropdown";
@@ -12,25 +12,25 @@ import { preferences, updatePreferences, usePreferences } from "/@/vben/preferen
import { VbenDropdownRadioMenu, VbenIconButton } from "/@/vben//shadcn-ui";
defineOptions({
name: "AuthenticationLayoutToggle"
name: "AuthenticationLayoutToggle",
});
const menus = computed((): VbenDropdownMenuItem[] => [
{
icon: PanelLeft,
label: $t("authentication.layout.alignLeft"),
value: "panel-left"
value: "panel-left",
},
{
icon: InspectionPanel,
label: $t("authentication.layout.center"),
value: "panel-center"
value: "panel-center",
},
{
icon: PanelRight,
label: $t("authentication.layout.alignRight"),
value: "panel-right"
}
value: "panel-right",
},
]);
const { authPanelCenter, authPanelLeft, authPanelRight } = usePreferences();
@@ -38,8 +38,8 @@ const { authPanelCenter, authPanelLeft, authPanelRight } = usePreferences();
function handleUpdate(value: string) {
updatePreferences({
app: {
authPageLayout: value as AuthPageLayoutType
}
authPageLayout: value as AuthPageLayoutType,
},
});
}
</script>
@@ -1,71 +1,69 @@
<script setup lang="ts">
import type { SelectOption } from '/@/vben/types';
import type { SelectOption } from "/@/vben/types";
import { computed } from 'vue';
import { computed } from "vue";
import { $t } from '/@/locales';
import { $t } from "/@/locales";
import SelectItem from '../select-item.vue';
import SwitchItem from '../switch-item.vue';
import SelectItem from "../select-item.vue";
import SwitchItem from "../switch-item.vue";
defineOptions({
name: 'PreferenceInterfaceControl',
name: "PreferenceInterfaceControl",
});
const widgetGlobalSearch = defineModel<boolean>('widgetGlobalSearch');
const widgetFullscreen = defineModel<boolean>('widgetFullscreen');
const widgetLanguageToggle = defineModel<boolean>('widgetLanguageToggle');
const widgetNotification = defineModel<boolean>('widgetNotification');
const widgetThemeToggle = defineModel<boolean>('widgetThemeToggle');
const widgetSidebarToggle = defineModel<boolean>('widgetSidebarToggle');
const widgetLockScreen = defineModel<boolean>('widgetLockScreen');
const appPreferencesButtonPosition = defineModel<string>(
'appPreferencesButtonPosition',
);
const widgetRefresh = defineModel<boolean>('widgetRefresh');
const widgetGlobalSearch = defineModel<boolean>("widgetGlobalSearch");
const widgetFullscreen = defineModel<boolean>("widgetFullscreen");
const widgetLanguageToggle = defineModel<boolean>("widgetLanguageToggle");
const widgetNotification = defineModel<boolean>("widgetNotification");
const widgetThemeToggle = defineModel<boolean>("widgetThemeToggle");
const widgetSidebarToggle = defineModel<boolean>("widgetSidebarToggle");
const widgetLockScreen = defineModel<boolean>("widgetLockScreen");
const appPreferencesButtonPosition = defineModel<string>("appPreferencesButtonPosition");
const widgetRefresh = defineModel<boolean>("widgetRefresh");
const positionItems = computed((): SelectOption[] => [
{
label: $t('preferences.position.auto'),
value: 'auto',
label: $t("preferences.position.auto"),
value: "auto",
},
{
label: $t('preferences.position.header'),
value: 'header',
label: $t("preferences.position.header"),
value: "header",
},
{
label: $t('preferences.position.fixed'),
value: 'fixed',
label: $t("preferences.position.fixed"),
value: "fixed",
},
]);
</script>
<template>
<SwitchItem v-model="widgetGlobalSearch">
{{ $t('preferences.widget.globalSearch') }}
{{ $t("preferences.widget.globalSearch") }}
</SwitchItem>
<SwitchItem v-model="widgetThemeToggle">
{{ $t('preferences.widget.themeToggle') }}
{{ $t("preferences.widget.themeToggle") }}
</SwitchItem>
<SwitchItem v-model="widgetLanguageToggle">
{{ $t('preferences.widget.languageToggle') }}
{{ $t("preferences.widget.languageToggle") }}
</SwitchItem>
<SwitchItem v-model="widgetFullscreen">
{{ $t('preferences.widget.fullscreen') }}
{{ $t("preferences.widget.fullscreen") }}
</SwitchItem>
<SwitchItem v-model="widgetNotification">
{{ $t('preferences.widget.notification') }}
{{ $t("preferences.widget.notification") }}
</SwitchItem>
<SwitchItem v-model="widgetLockScreen">
{{ $t('preferences.widget.lockScreen') }}
{{ $t("preferences.widget.lockScreen") }}
</SwitchItem>
<SwitchItem v-model="widgetSidebarToggle">
{{ $t('preferences.widget.sidebarToggle') }}
{{ $t("preferences.widget.sidebarToggle") }}
</SwitchItem>
<SwitchItem v-model="widgetRefresh">
{{ $t('preferences.widget.refresh') }}
{{ $t("preferences.widget.refresh") }}
</SwitchItem>
<SelectItem v-model="appPreferencesButtonPosition" :items="positionItems">
{{ $t('preferences.position.title') }}
{{ $t("preferences.position.title") }}
</SelectItem>
</template>