feat(Text): 动态文本国际化 i18n_params 透传

TextBase.set_attrs/set_otext 把 opts.i18n_params 传给 i18n._(otext, params),
支持 otext 用占位符由后端传值(切语言重渲染同样带参)。

此前 i18n._ 已支持 obj 参数, 但 widget 层未透传 -> 后端声明 i18n_params 的
控件渲染出字面占位串。商机产线"数据参考"弹窗实测: 全部主题显示为原始占位符
而非条数/预算数字。

bundle(dist/bricks.js) 被 gitignore, 由部署侧 build.sh 构建。
This commit is contained in:
yumoqing 2026-09-14 19:18:15 +08:00
parent 1989a0f04f
commit 458b599061

View File

@ -467,9 +467,14 @@ bricks.TextBase = class extends bricks.JsWidget {
if (this.opts.hasOwnProperty('i18n')){ if (this.opts.hasOwnProperty('i18n')){
this.i18n = this.opts.i18n; this.i18n = this.opts.i18n;
} }
if (this.opts.hasOwnProperty('i18n_params')){
// 动态文本国际化otext 用 ${name} 占位i18n_params 提供替换值
// 切语言时 set_i18n_text→set_otext 会带 i18n_params 重新 obj_fmtstr
this.i18n_params = this.opts.i18n_params;
}
this.set_style('flexShrink', '0'); this.set_style('flexShrink', '0');
if (this.i18n && this.otext) { if (this.i18n && this.otext) {
this.text = bricks.app.i18n._(this.otext); this.text = bricks.app.i18n._(this.otext, this.i18n_params);
} }
this.dom_element.innerHTML = this.text || ''; this.dom_element.innerHTML = this.text || '';
} }
@ -477,7 +482,7 @@ bricks.TextBase = class extends bricks.JsWidget {
var text; var text;
this.otext = otxt || ''; this.otext = otxt || '';
if (this.i18n) { if (this.i18n) {
text = bricks.app.i18n._(this.otext); text = bricks.app.i18n._(this.otext, this.i18n_params);
} else { } else {
text = this.otext; text = this.otext;
} }