feat(i18n): 管理端与玩家端三语支持(中/英/马来语)
- 管理后台 adminT 文案库、结算与代理端页面、表单校验 - 玩家端 vue-i18n 补全首页/公告/串关与 ms 文案 - Element Plus ms 语言包与共享 locale 工具
This commit is contained in:
36
apps/admin/src/composables/useAdminLocale.ts
Normal file
36
apps/admin/src/composables/useAdminLocale.ts
Normal 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,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user