From 449631732a5730bb93226295f543c05f495276e5 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 14 Sep 2026 20:08:44 +0800 Subject: [PATCH] =?UTF-8?q?fix(i18n):=20obj=5Ffmtstr=20=E8=A3=B8=E8=B0=83?= =?UTF-8?q?=E7=94=A8=20ReferenceError=E2=80=94=E2=80=94=E5=BF=85=E9=A1=BB?= =?UTF-8?q?=E8=B5=B0=20bricks=20=E5=91=BD=E5=90=8D=E7=A9=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit utils.js 定义的是 bricks.obj_fmtstr(挂命名空间), 而 i18n.js 的 _() 里写的是 裸 obj_fmtstr(obj, mt) → ReferenceError, 导致带参翻译整体失效。 此前该行从未被执行(没有调用方给 i18n._ 传 obj), 直到 i18n_params 动态文本特性 (widget.js 透传 params)才暴露。实测: 商机产线数据参考弹窗渲染出字面 ${p0}, console 报 ReferenceError: obj_fmtstr is not defined。 对照: 同文件 objget 是 var 全局函数(utils.js:415), 裸调用合法, 无需改。 已全仓核查 obj_fmtstr 裸调用清零。 --- bricks/i18n.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bricks/i18n.js b/bricks/i18n.js index 8d000c1..ab0bc11 100644 --- a/bricks/i18n.js +++ b/bricks/i18n.js @@ -31,7 +31,10 @@ bricks.I18n = class { var msgs = this.lang_msgs[this.lang].msgs || {}; mt = msgs[txt] || txt; if (obj instanceof Object){ - outt = obj_fmtstr(obj, mt); + // 🔴 必须用 bricks.obj_fmtstr(该函数定义在 utils.js 的 bricks 命名空间下, + // 裸 obj_fmtstr 是 ReferenceError)。此前这行从未被执行(无调用方传 obj), + // 直到 i18n_params 动态文本特性(widget.js 传 params)才暴露此 bug。 + outt = bricks.obj_fmtstr(obj, mt); } else { outt = mt; }