feat(i18n): 管理端与玩家端三语支持(中/英/马来语)

- 管理后台 adminT 文案库、结算与代理端页面、表单校验
- 玩家端 vue-i18n 补全首页/公告/串关与 ms 文案
- Element Plus ms 语言包与共享 locale 工具
This commit is contained in:
2026-06-03 15:05:36 +08:00
parent 80adc0e928
commit cbfa18d1d3
63 changed files with 3081 additions and 1038 deletions

View File

@@ -0,0 +1,36 @@
import { ref, computed } from 'vue';
import {
ADMIN_LOCALES,
adminT,
adminLocaleTag,
type AdminLocale,
} from '../i18n/admin-messages';
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 function useAdminLocale() {
const t = (key: string, params?: Record<string, string | number>) =>
adminT(locale.value, key, params);
function setLocale(code: AdminLocale) {
locale.value = code;
localStorage.setItem(STORAGE_KEY, code);
document.cookie = `${STORAGE_KEY}=${encodeURIComponent(code)};path=/;max-age=31536000;SameSite=Lax`;
}
return {
locale: computed(() => locale.value),
localeTag: computed(() => adminLocaleTag(locale.value)),
locales: ADMIN_LOCALES,
setLocale,
t,
};
}