refactor(i18n): 完善多语言适配与缓存隔离逻辑

1. 扩展支持多语种并对齐后端白名单配置
2. 实现租户/应用/语言三维缓存隔离
3. 加固语言包合并的原型链安全防护
4. 优化语言列表加载逻辑与调试日志
5. 调整uniacid切换与语言更新的事件处理
This commit is contained in:
2026-06-10 14:26:48 +08:00
parent 071db2d70c
commit 2f5f23d21a
3 changed files with 89 additions and 49 deletions

View File

@@ -3,8 +3,9 @@
// 语言包配置
export const langConfig = {
// 语言列表
langList: ['zh-cn', 'en-us'],
// 语言列表 — 与后端 Lang.php::overrides() 白名单对齐
// 增删需要后端同步改 LangOverrideModel::normalizeAppType 旁的 $allow_lang
langList: ['zh-cn', 'en-us', 'zh-tw', 'ja-jp', 'ko-kr', 'th-th', 'vi-vn', 'id-id', 'es-es', 'fr-fr', 'de-de', 'ru-ru', 'ar-sa', 'pt-pt', 'it-it', 'tr-tr'],
// 默认语言
defaultLang: 'zh-cn',
// 语言包加载方式:'lazy'(按需加载)或 'preload'(预加载)
@@ -22,7 +23,8 @@ export const langConfig = {
bootTimeout: 2000,
// 单次请求超时(ms)
requestTimeout: 4000,
// 本地缓存 key 前缀: <prefix><uniacid>_<lang>
// 本地缓存 key 前缀: <prefix><uniacid>_<appType>_<lang>
// 三维隔离,与 lang.js::getOverrideStorageKey / getOverrideMemKey 保持一致
storagePrefix: 'LANG_OVR_',
// 切租户/uniacid 时强制重拉
refreshOnUniacidChange: true,