|
文档
预约演示平台
平台MCPCLIAPI
工作流
指南更新日志

欢迎

  • 概览
  • 身份验证
  • 错误与状态码
  • Webhook 签名

本地化

  • 概览
  • 创建任务
  • 锁定不可翻译的键
  • 查看任务组状态
  • 获取单个作业
  • 列出作业
  • Webhook 结果投递
  • 实时进度(WebSocket)

流水线

  • 概览
  • 本地化前 AI 预编辑
  • 人工审核
  • AI 审校(后编辑)
  • 改写成更自然的文案
  • 回译检查
  • 配置 Pipeline
  • 查看流水线运行记录

预配

  • 概览
  • 创建预配作业
  • 来源类型
  • AI 会提取哪些内容
  • Webhook 投递
  • 实时进度(WebSocket)

同步

  • 本地化
  • Recognize

引擎管理

  • Engine Suggestions

查看任务组状态

你创建了一个任务组,拿到了一个 groupId,现在多个语言区域正在并行翻译。接下来,在整批任务尘埃落定之前,你需要反复回答同一个问题:这次提交此刻的整体进展如何?不是逐个语言区域去看,而是看汇总结果。多少已完成,多少产出了带警告的结果,多少失败了,多少仍在处理中。

这个端点返回的正是这些信息。一次轮询,就能在单个响应中拿到所有语言区域的状态。刚接触异步本地化?建议先阅读 异步本地化 API 概览。

本页内容

  • 获取任务组
  • 响应
  • 任务组状态
  • 轮询频率
  • 单个语言区域失败时

获取任务组#

获取一个任务组及其所有子任务的状态。

text
GET /jobs/localization/groups/:groupId

在 X-API-Key 请求头中使用你的 API 密钥进行身份验证,也就是你在 创建该任务组 时使用的同一把密钥。groupId 是 202 响应中带有 ljg_ 前缀的 id。

响应#

这个响应是整次提交的一个快照:包含任务组自身的 status、四个计数,以及各个子任务及其各自状态。每次轮询时,你读取的都是这个对象。

json
{
  "groupId": "ljg_A1b2C3d4E5f6G7h8",
  "status": "processing",
  "sourceLocale": "en",
  "totalJobs": 3,
  "completedJobs": 1,
  "completedWithWarningsJobs": 0,
  "failedJobs": 0,
  "jobs": [
    { "id": "ljb_A1b2C3d4E5f6G7h8", "targetLocale": "de", "status": "completed", "warnings": [], "completedAt": "2026-03-16T10:30:04.000Z" },
    { "id": "ljb_B2c3D4e5F6g7H8i9", "targetLocale": "fr", "status": "processing", "warnings": [], "completedAt": null },
    { "id": "ljb_C3d4E5f6G7h8I9j0", "targetLocale": "ja", "status": "queued", "warnings": [], "completedAt": null }
  ],
  "createdAt": "2026-03-16T10:30:00.000Z"
}

终态任务的三个计数字段——completedJobs、completedWithWarningsJobs 和 failedJobs——相加后,就是已完成的语言区域数量。其余的 totalJobs 仍处于 queued 或 processing。在上面的快照中,3 个里有 1 个已完成,2 个仍在进行中,所以只看一次计数,你就能知道任务尚未结束,无需扫描 jobs 数组。当这个总和达到 totalJobs 时,任务组就进入了终态。

每个任务的 warnings 数组会标出非关键性的 pipeline 阶段失败,例如预编辑或回译步骤未能完成。数组非空意味着该任务依然产出了结果,但至少有一个可选阶段没有完成。实际翻译后的 outputData 则位于对应的 单个任务 上——当你准备查看某个已完成语言区域的内容时,再去获取它。

任务组状态#

任务组的 status 会将所有子任务汇总为一个状态值。你需要持续轮询,直到它进入终态。

任务组状态含义
pending任务组已创建,但还没有任务开始
processing至少有一个任务正在进行中
completed所有任务均已成功完成
completed_with_warnings所有任务都已产出结果,但至少有一个任务中的一个或多个可选 pipeline 阶段失败
partial部分任务已完成,部分任务失败
failed所有任务均失败

completed、completed_with_warnings 和 partial 之间的区分,正是这个端点的价值所在:它能区分“所有语言区域都已交付”“所有语言区域都已交付,但部分带有警告”以及“部分语言区域已交付,部分未交付”——否则你就得逐个读取任务,才能拼出这三种结果。partial 不是错误;它是一个真实存在的状态,任务组会如实返回,好让你的代码据此分支处理。

轮询频率#

轮询间隔

对于大多数任务,每种语言的处理通常需要 2–8 秒。如果你选择轮询,而不是使用 webhook 或 WebSocket,那么以 2 秒为间隔是一个合理的起点。

轮询是跟踪任务组最简单的方式,对于短生命周期的批处理也完全够用。但它确实不是更强的方案,这点值得直说:无论是否有变化,每次轮询都要走一次完整的请求往返;而且你只能在下一次轮询时才知道某个语言区域已完成,而不是在它完成的那一刻立即得知。

如果你希望每个结果一就绪就立刻拿到,就别轮询——让系统主动通知你。平台会在每个语言区域完成时,将结果发送到你的 webhook URL;同时,任务组上的 WebSocket connection 会在每次状态变化时推送完整的状态快照,让你的 UI 无需主动询问也能实时更新。当 webhook 端点或持久连接的成本高于这项任务本身的价值时,适合使用轮询;当你的 UI 对延迟敏感时,则应选择推送。

单个语言区域失败时#

看到“同时翻译成多个语言区域”,一个务实的问题自然会先冒出来:如果其中一个语言区域失败了,其余的会怎样?答案就在响应里。

每个语言区域都是一个独立任务。如果德语成功而日语失败,德语翻译仍会正常完成并交付——失败不会让它回滚。失败的任务会在任务组中显示为 status: "failed",failedJobs 会增加,而任务组整体会汇总为 partial:

json
{
  "groupId": "ljg_A1b2C3d4E5f6G7h8",
  "status": "partial",
  "sourceLocale": "en",
  "totalJobs": 3,
  "completedJobs": 2,
  "completedWithWarningsJobs": 0,
  "failedJobs": 1,
  "jobs": [
    { "id": "ljb_A1b2C3d4E5f6G7h8", "targetLocale": "de", "status": "completed", "warnings": [], "completedAt": "2026-03-16T10:30:04.000Z" },
    { "id": "ljb_B2c3D4e5F6g7H8i9", "targetLocale": "fr", "status": "completed", "warnings": [], "completedAt": "2026-03-16T10:30:05.000Z" },
    { "id": "ljb_C3d4E5f6G7h8I9j0", "targetLocale": "ja", "status": "failed", "warnings": [], "completedAt": null }
  ],
  "createdAt": "2026-03-16T10:30:00.000Z"
}

两个语言区域已交付,一个没有,计数会直接告诉你这一点,无需逐项检查。要重试,请仅针对失败的语言区域 提交一个新请求,并使用新的幂等键。某个失败语言区域的完整错误描述——也就是 errorMessage——位于对应的 单个任务 上;任务组提供的是计数和结论。

部分失败是正常状态

partial 的含义就和计数显示的一样明确:部分语言区域已完成,部分失败。已完成的语言区域已经交付。无需回滚,也无需为成功的语言区域重复花费——你只需要重试失败的部分。

后续步骤#

获取单个任务
查看某个语言区域的译文 outputData、warnings 和 error message
Webhook 交付
在每个语言区域完成的第一时间,将结果推送给你
实时进度(WebSocket)
随着每个语言区域完成,将任务组快照实时推送到你的 UI

这个页面对你有帮助吗?

Max PrilutskiyMax Prilutskiy·已更新 12 天前·1 分钟阅读