Rundeck作业活动页相对时间格式无法本地化问题求助
解决Rundeck作业活动页面相对时间格式本地化问题
问题确认
Rundeck作业活动页面的相对时间(如Today at 10:15 AM这类格式)渲染逻辑基于moment.js,但默认实现中该部分时间格式化未跟随系统语言设置,强制使用en_US的AM/PM格式,而鼠标悬停的完整时间、时长等其他时间相关字段可正常完成本地化翻译。
可行修改方案
以下是经过验证的修改方式,适配Rundeck 4.x系列版本:
加载对应语言的moment本地化包
- 定位Rundeck前端代码中引入moment的文件(通常为
app.js或页面专属JS文件),添加目标语言的本地化包引入。以韩语为例:import 'moment/locale/ko'; - 确保初始化moment时绑定系统当前语言变量:
moment.locale(rundeckLocale);
- 定位Rundeck前端代码中引入moment的文件(通常为
重写相对时间格式化规则
- 找到处理作业活动时间渲染的组件(如
JobListActivityItem.vue或对应JS模板),定位使用moment().calendar()方法的代码段。 - 默认
calendar()方法硬编码了en_US配置,需替换为自定义本地化规则。仍以韩语为例:moment.locale('ko', { calendar: { lastDay: '[어제] LT', sameDay: '[오늘] LT', nextDay: '[내일] LT', lastWeek: '[지난] dddd LT', nextWeek: '[다음] dddd LT', sameElse: 'L' } }); - 注意移除格式化代码中强制指定
'en'参数的逻辑,改用当前locale配置。
- 找到处理作业活动时间渲染的组件(如
Docker环境下的修改方式
- 若使用Docker镜像,可通过挂载自定义前端文件覆盖原有内容:
- 提取镜像中的前端JS文件,按上述规则修改后,挂载到容器内
/opt/rundeck/app/assets/javascripts/对应路径。 - 或构建自定义Docker镜像,在构建阶段完成前端代码修改并重新打包。
- 提取镜像中的前端JS文件,按上述规则修改后,挂载到容器内
- 若使用Docker镜像,可通过挂载自定义前端文件覆盖原有内容:
注意事项
- 不同Rundeck版本的前端文件结构可能存在差异,需根据实际版本调整文件路径与代码位置。
- 修改完成后需清除浏览器缓存或重启Rundeck服务,确保修改生效。
- 若使用SNAPSHOT版本,官方后续更新可能覆盖自定义修改,建议定期同步并重新应用配置。
内容的提问来源于stack exchange,提问作者Snorri Bergmann
相关产品推荐
相关产品推荐

