agent.develop d891ee720a feat(pbl_scense_ext): loader 运行时 i18n 链路 + i18n RBAC 注册(QC #7 / QC #6)
#7 loader.js 新增运行时 i18n:loadLang(lang) fetch /pbl_scense_ext/i18n/<lang>/msg.txt
→ MSG_RE 解析(与 gen_overlay_pages.py 逐字一致,跳过 # 注释/空行)→ 遍历
[data-pbl-i18n] 节点,按 data-pbl-i18n-args 的 {title}/{key}/{budget}/{src} 占位
替换后写回 textContent;fetch/解析失败降级内置中文 FALLBACK_ZH 并打
degrade('PBL_E_I18N', pbl.overlay.err.i18n) 横幅;start() 在 boot() 之后调一次,
另绑语言切换钩子(pbl-lang-change/bricks-lang-change/languagechange 事件 +
__pblSetLang/setLang)+ MutationObserver 覆盖异步挂载节点。load()/start()/
degrade()/apiBase() 既有逻辑不改。

#6 load_path.py PATHS 追加 ('/pbl_scense_ext/i18n/zh/msg.txt','any') 与
('/pbl_scense_ext/i18n/en/msg.txt','any')(预鉴权页壳首屏文案,禁通配符);
audit() 扫描目录由 overlay/pbl_overlay 扩展为 AUDIT_DIRS 三类(i18n 递归含
语言子目录),新增 UNREGISTERED/MISSING FILE/语言清单一致性/BAD ENTRY/通配符
五类检查,消除漏注册假绿(实测:临时删一条 i18n 条目 → --audit rc=1)。
2026-09-21 13:19:20 +08:00
..