feat(admin): 从已有玩家升级代理、修复 i18n 与过期 .js 冲突

- 新建一级代理改为选择已有玩家;新建用户可选一级代理

- 操作日志/注单等扁平 key 翻译;清理 src 内误生成 .js,Vite 优先解析 .ts

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-03 15:42:15 +08:00
parent cbfa18d1d3
commit 3b739982a1
27 changed files with 625 additions and 165 deletions

View File

@@ -1,34 +1,38 @@
import { ref, computed } from 'vue';
import { computed } from 'vue';
import { useI18n } from 'vue-i18n';
import {
ADMIN_LOCALES,
adminT,
adminLocaleTag,
type AdminLocale,
} from '../i18n/admin-messages';
import { ADMIN_LOCALE_STORAGE_KEY } from '../i18n';
import { resolveAdminMessage } from '../i18n/resolve-message';
const STORAGE_KEY = 'admin_locale';
const locale = ref<AdminLocale>(
(localStorage.getItem(STORAGE_KEY) as AdminLocale) || 'zh-CN',
);
export function getAdminLocale(): AdminLocale {
return locale.value;
}
export type { AdminLocale };
export { getAdminLocale } from '../i18n';
export function useAdminLocale() {
const t = (key: string, params?: Record<string, string | number>) =>
adminT(locale.value, key, params);
const { locale } = useI18n();
/** 扁平 key 查表 + 占位符,不依赖 vue-i18n 嵌套路径解析 */
function t(key: string, params?: Record<string, string | number>): string {
const loc = locale.value as AdminLocale;
let raw = resolveAdminMessage(key, loc) ?? key;
if (!params) return raw;
return Object.entries(params).reduce(
(s, [k, v]) => s.replace(new RegExp(`\\{${k}\\}`, 'g'), String(v)),
raw,
);
}
function setLocale(code: AdminLocale) {
locale.value = code;
localStorage.setItem(STORAGE_KEY, code);
document.cookie = `${STORAGE_KEY}=${encodeURIComponent(code)};path=/;max-age=31536000;SameSite=Lax`;
localStorage.setItem(ADMIN_LOCALE_STORAGE_KEY, code);
document.cookie = `${ADMIN_LOCALE_STORAGE_KEY}=${encodeURIComponent(code)};path=/;max-age=31536000;SameSite=Lax`;
}
return {
locale: computed(() => locale.value),
localeTag: computed(() => adminLocaleTag(locale.value)),
locale: computed(() => locale.value as AdminLocale),
localeTag: computed(() => String(locale.value)),
locales: ADMIN_LOCALES,
setLocale,
t,