You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS Report中JS函数内使用$localizedResource做多语言翻译失效问题

代码问题排查

你写的代码存在4个核心错误,直接导致翻译失效:

  • 拼写错误:JS Report 多语言实例固定为 $localizedResource(尾字母R大写),你写的$localizedresource全小写,根本无法获取多语言对象
  • 属性访问逻辑错误:this.$localizedresource.message 是访问对象上固定名为message的静态属性,但message实际是存储了转换后key的变量,动态key必须用方括号语法访问
  • 空逻辑分支缺失:当传入key为空时,函数没有返回值,会渲染出undefined
  • 兜底逻辑缺失:如果多语言配置里找不到对应key,没有返回原始值的降级处理,会出现空白单元格
可行实现方案

1. 编写正确的翻译Helper函数

把以下代码放到模板的Helpers配置块中:

function translateKey(key) {
  if (!key) return ''
  // 转换key格式和多语言配置的键名规则对齐
  const targetKey = key.toUpperCase()
  // 动态取对应翻译值,注意拼写和方括号访问语法
  const translated = this.$localizedResource[targetKey]
  // 找不到翻译时兜底返回原始值
  return translated || key
}

2. 模板调用写法

表格单元格部分直接按如下方式调用即可:

<tr>
<td class='col-narrow'>{{$localizedResource.DATE}}</td>
<td class='col-narrow'>{{$localizedResource.TIME}}</td>
<td class='col-narrow'>{{$localizedResource.DAY}}</td>
</tr>
<tr>
<td class='col-narrow'>{{date}}</td>
<td class='col-narrow'>{{time}}</td>
<td class='col-narrow'>{{translateKey day}}</td>
</tr>

3. 多语言配置校验

确保locales目录下各语言文件的星期键名和转换后的大写规则完全匹配,以中文配置为例:

{
  "DATE": "日期",
  "TIME": "时间",
  "DAY": "星期",
  "MONDAY": "星期一",
  "TUESDAY": "星期二",
  "WEDNESDAY": "星期三",
  "THURSDAY": "星期四",
  "FRIDAY": "星期五",
  "SATURDAY": "星期六",
  "SUNDAY": "星期日"
}
额外注意事项
  • 如果Helper内部拿不到this.$localizedResource,可以在报表的beforeRender脚本中提前处理day字段的翻译,再把处理后的值传给模板渲染,避免上下文绑定问题
  • 不要修改多语言对象的固定拼写,JS Report的localization插件默认挂载的对象名大小写是固定的
  • 如果接口返回的day值本身是大写/首字母大写,调整targetKey的转换逻辑和配置键名保持一致即可

内容的提问来源于stack exchange,提问作者Sha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 01:39:24