webv2: localize queue runtime error messages and notification titles

该问题出现在 InvokeAI Web v2 队列运行时抛出失败结果时:队列项错误文本与运行结果通知标题均为运行时直接写入或硬编码的英文,无法通过 i18n 翻译。优先排查队列运行时错误文本的生成位置( runtime.ts )以及两个展示侧( QueueItemDetails.tsx 、 work

快速结论:该问题出现在 InvokeAI Web v2 队列运行时抛出失败结果时:队列项错误文本与运行结果通知标题均为运行时直接写入或硬编码的英文,无法通过 i18n 翻译。优先排查队列运行时错误文本的生成位置(runtime.ts)以及两个展示侧(QueueItemDetails.tsx、workbenchState.ts)是否存在绕过翻译键的硬编码字符串。

适用环境:InvokeAI 前端 Web v2(invokeai/frontend/webv2);相关代码路径为 src/features/queue/runtime.ts、QueueItemDetails.tsx 与 workbenchState.ts。Issue 未提供操作系统、Python、CUDA、显卡或依赖版本信息。

最快修复方案:暂无确认的一步修复方案。Issue 中提出的候选方向是:在 commands.setStatus({ error }) 写入队列项时,保留稳定错误码与原始服务端详情(例如 { code: 'server_error', detail }),由 React 视图根据 public/locales/en.json 中的翻译键渲染本地化文案,通知标题同样改为翻译键。

注意事项:上述错误码方案在 Issue 正文中仅作为 “Possible approach” 提出,尚未验证;评论仅确认 PR #9858 已合并、可继续跟进该问题,未给出最终实现或测试结论。改动会同时影响服务端错误(5xx)与其他运行时错误文本,需逐项核对错误码覆盖范围。

问题场景

用户在 InvokeAI Web v2 中运行任务,队列运行时(invokeai/frontend/webv2/src/features/queue/runtime.ts)在任务失败时通过 commands.setStatus({ error }) 把失败文本以纯字符串形式写入队列项的 errorMessage。该文本随后在 QueueItemDetails.tsx(读取 item.errorMessage)和 workbenchState.ts 的运行结果通知中直接原样展示;通知标题同样是硬编码英文,例如 'Invocation failed'。由于运行时在 React 之外没有 i18n 钩子,这些字符串当前无法翻译。该问题源自 #9858 的评审跟进,覆盖 #9858 中的服务端错误(5xx)失败,也覆盖其他运行时错误字符串。

报错原文

webv2: localize queue runtime error messages and notification titles

原因分析

可能原因:队列运行时以纯字符串保存失败信息,不携带可映射的稳定错误码;React 视图只能按字符串原样渲染。与此同时,运行结果通知标题在 workbenchState.ts 中被硬编码为英文。由于运行时本身位于 React 组件树之外,无法直接使用 i18n 钩子,因此这些文本缺少进入翻译资源(public/locales/en.json)的入口,显示语言不会随界面语言切换。

环境排查

  • 确认使用的是 InvokeAI Web v2 前端,而非旧版 Web UI。
  • 确认相关代码位于 invokeai/frontend/webv2/src/features/queue/runtime.ts,并检查 QueueItemDetails.tsx 与 workbenchState.ts 是否存在硬编码英文。
  • 核对 public/locales/en.json 中是否已有对应的错误码与通知标题翻译键。
  • Issue 未提供 Python、PyTorch、CUDA、显卡及依赖版本信息,暂无对应排查项。

解决步骤

  1. 定位 runtime.ts 中 commands.setStatus({ error }) 的调用点,确认错误文本是否为纯字符串写入。
  2. 可优先尝试按 Issue 建议,在写入队列项时同时保存稳定错误码与原始服务端详情,例如 { code: 'server_error', detail },使服务端错误(5xx)与其他运行时错误都能映射到翻译键。
  3. 在 public/locales/en.json 中为各错误码补充对应本地化文案,并将服务端原文作为次要详情展示。
  4. 修改 QueueItemDetails.tsx 的 item.errorMessage 渲染逻辑,改为按错误码取翻译键,而不是直接输出字符串。
  5. 将 workbenchState.ts 中运行结果通知标题(如 'Invocation failed')改为翻译键,经 i18n 解析后显示。

验证方法

在 Web v2 中触发一次服务端错误(5xx)失败与其他运行时失败,确认队列详情与运行结果通知均按当前界面语言显示本地化文案,通知标题不再出现硬编码英文;同时确认服务端原始详情仍可作为次要信息查看。

参考来源

invoke-ai/InvokeAI #9945

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 32107

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注