chore: rebrand product as 省心推 and lock UI to zh-CN
Update server titles, web/desktop window/tray/document titles, login copy, and electron build metadata to use the Chinese product name 省心推. Drop the runtime locale switcher and en-US import — the app now ships zh-CN only. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,7 +16,6 @@ import { useRoute, useRouter } from "vue-router";
|
||||
import { useI18n } from "vue-i18n";
|
||||
|
||||
import { workspaceApi } from "@/lib/api";
|
||||
import { type AppLocale, setAppLocale } from "@/i18n";
|
||||
import { useAuthStore } from "@/stores/auth";
|
||||
|
||||
const route = useRoute();
|
||||
@@ -86,22 +85,6 @@ type NavSection = {
|
||||
items: NavItem[];
|
||||
};
|
||||
|
||||
const localeOptions = computed(() => [
|
||||
{ label: t("locale.zh-CN"), value: "zh-CN" },
|
||||
{ label: t("locale.en-US"), value: "en-US" },
|
||||
]);
|
||||
|
||||
const currentLocale = computed({
|
||||
get: () => locale.value as AppLocale,
|
||||
set: (value: AppLocale) => {
|
||||
setAppLocale(value);
|
||||
},
|
||||
});
|
||||
|
||||
const currentLocaleLabel = computed(() => {
|
||||
return localeOptions.value.find((opt) => opt.value === currentLocale.value)?.label ?? "Language";
|
||||
});
|
||||
|
||||
const navSections = computed<NavSection[]>(() => {
|
||||
const base = [
|
||||
{
|
||||
@@ -220,10 +203,6 @@ function go(path: string): void {
|
||||
void router.push(path);
|
||||
}
|
||||
|
||||
function handleLocaleChange({ key }: { key: any }): void {
|
||||
currentLocale.value = key as AppLocale;
|
||||
}
|
||||
|
||||
async function handleLogout(): Promise<void> {
|
||||
await authStore.logout();
|
||||
await router.replace("/login");
|
||||
@@ -298,22 +277,6 @@ async function handleLogout(): Promise<void> {
|
||||
</nav>
|
||||
|
||||
<div class="admin-header-actions">
|
||||
<div v-if="!isMembershipBlocked" class="admin-locale-switch">
|
||||
<a-dropdown placement="bottomRight" :trigger="['click', 'hover']">
|
||||
<div class="locale-dropdown-trigger">
|
||||
<GlobalOutlined class="locale-icon" />
|
||||
<span>{{ currentLocaleLabel }}</span>
|
||||
</div>
|
||||
<template #overlay>
|
||||
<a-menu :selected-keys="[currentLocale]" @click="handleLocaleChange">
|
||||
<a-menu-item v-for="opt in localeOptions" :key="opt.value">
|
||||
{{ opt.label }}
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
|
||||
<!-- Quota Indicator -->
|
||||
<div v-if="!isMembershipBlocked" class="quota-pill">
|
||||
<a-tag color="blue" :bordered="false" class="quota-pill-tag">{{ quotaSummary?.plan_name || t("shell.planFallback") }}</a-tag>
|
||||
@@ -487,37 +450,6 @@ async function handleLogout(): Promise<void> {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.admin-locale-switch {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.admin-locale-select {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.locale-dropdown-trigger {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 4px 10px;
|
||||
height: 32px;
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
font-size: 14px;
|
||||
color: #141414;
|
||||
}
|
||||
|
||||
.locale-dropdown-trigger:hover {
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
.locale-icon {
|
||||
font-size: 16px;
|
||||
color: #595959;
|
||||
}
|
||||
|
||||
.quota-pill {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
Reference in New Issue
Block a user