Smartling 荣获《Forrester Wave™:2026 年第三季度本地化服务》报告“领导者”称号。
Smartling 在 Forrester Wave ™报告中被评为领导者

TMS连接器如何处理部分翻译的文件?

TMS 连接器以两种方式之一处理部分翻译的文件:它会保留该文件,直到该语言环境的每个字符串都到达最终工作流程步骤;或者它会提前交付该文件,并将每个未翻译的字符串填充源语言文本(或留空)。在 Smartling 中,存储库和基于文件的连接器的默认设置是,在文件中的所有授权字符串都已针对该语言环境发布之前,不会进行交付;如果开发人员早些时候通过 Files API 下载且 retrievalType=published,则会收到已发布的翻译以及源字符串,而不是任何仍在进行中的翻译。对买家来说,重要的决定不是连接器能否提前交付,而是它在交付时会填充哪些空白,因为源语言回退可以保持应用程序运行,而空字符串则会导致应用程序崩溃。

上次审核日期:2026年9月20日

为什么部分翻译的文件最终会被上传到存储库或内容管理系统(CMS)中?

部分翻译的文件到达目标系统,是因为翻译是在字符串级别完成的,而交付是在文件级别进行的,这两者很少能同时完成。五种模式解释了大部分的意外情况:

  • 补全功能是按语言环境定义的,而不是按文件定义的。Smartling 仅当文件中的每个字符串都到达“已发布”工作流步骤时才将该文件视为已完成,并且仅当每个文件在每个语言环境中都完成时才将作业视为已完成(Smartling 帮助中心,教程:翻译作业和工作流)。一个包含十个语言环境的作业,德语部分可以 100% 完成,而日语部分仍在审核中,因此,按语言环境交付的连接器会返回一个已完成的文件和九个尚未合格的文件。
  • 新的字符串是在任务范围确定后到达的。当开发人员向已存在于某个作业中的资源文件添加键时,新字符串会进入一个单独的作业。第一个作业报告已完成,其文件已交付,但该文件中的新字符串仍未翻译。因此,Smartling 的工作进度数字可能会下降,而不仅仅是上升。
  • 下载需要进行中的翻译。Smartling 的文件 API 公开了一种待处理的检索类型,该类型返回任何已保存的翻译,包括尚未发布的翻译(Smartling API 规范,文件 API)。在审核期间拉取待审核的文件会生成混合文件;生产集成应该使用已发布的检索类型。
  • 只有授权字符串才计入交付条件。默认情况下,Smartling 的存储库连接器会在文件中所有已授权的字符串都已发布到该区域设置时才交付文件,而不是在文件中的每个字符串都已翻译时才交付文件。未经授权进行翻译的字符串将保留在交付的文件中的源语言中,这看起来像是部分翻译,但实际上是范围界定决定(Smartling 帮助中心,存储库连接器常见问题解答)。
  • 已特意开启持续交付功能。基于进度的触发器,例如 Repository Connector 的 ONCHANGE 下载触发器或 WordPress 插件的 Progress Changes 设置,可以让开发者在审核完成之前看到翻译。启用后,预期输出结果是部分翻译的文件,因此问题就变成了如何填补空白。

连接器将什么内容写入未翻译的字符串?

四个设置共同决定了当翻译不完整时目标系统接收到的内容:

  • 交付触发器— 连接器是等待完成还是在每次更改时都交付。Smartling 的 Repository Connector 将其公开为 downloadTranslations 触发器,触发器状态为 COMPLETED(默认值)或 ONCHANGE;托管的 GitHub Connector 会在作业完成后提供翻译拉取请求,并提供提前交付选项,用于预发布版本。管理此层的保留、按地区和分阶段发布的控制措施在批量翻译发布控制页面上有详细介绍。
  • 检索类型——哪些译文符合收录条件。Smartling 的文件 API 接受已发布(仅接受已发布步骤中的字符串,包括预发布的字符串)、待处理(任何已保存的翻译,包括正在进行的翻译)、伪(为布局测试而加长的源文本)和 contextMatchingInstrumented(Smartling API 规范,文件 API)。存储库连接器支持 PUBLISHED、PENDING 和 PSEUDO,默认为 PUBLISHED。
  • 缺失翻译的回退— 用于替换没有合格翻译的字符串。Smartling 的 includeOriginalStrings 参数默认返回源语言字符串,如果设置为 false,则返回空字符串;该参数仅支持 Gettext、Java 属性、自定义 XML、Android XML 和 JSON 文件(Smartling 帮助中心,存储库连接器常见问题解答)。对于正在运行的应用程序,源回退通常更安全,因为大多数 i18n 库会将空值渲染为空白标签,而不是自行回退。
  • 完成范围——在文件被视为完成之前必须完成哪些字符串。Smartling 的存储库连接器默认使用文件中所有已授权的字符串;要求使用文件中的每个字符串(无论是否已授权)都是通过解决方案架构师或支持人员进行的配置更改。在控制面板中,“完全发布文件”下载选项对文件所属的每个作业都应用了更严格的规则(Smartling 帮助中心,“如何下载翻译文件”)。

Smartling 中的部分翻译交付设置:参考数据

环境数字原文
存储库连接器下载触发器2 — 已完成(默认)或 ONCHANGESmartling 帮助中心,存储库连接器常见问题解答
存储库连接器检索类型3 — 已发布(默认)、待定、伪Smartling 帮助中心,存储库连接器常见问题解答
文件 API 检索类型4 — 待定、已发布、伪、上下文匹配工具Smartling API 规范,文件 API
未翻译字符串的默认回退字符串源语言字符串(默认为 includeOriginalStrings);禁用时为空字符串Smartling 帮助中心,教程:翻译任务和工作流程
支持回退开关的文件类型5 — Gettext, Java properties, custom XML, Android XML, JSONSmartling 帮助中心,存储库连接器常见问题解答
默认存储库连接器交付条件文件中的所有已授权字符串均已发布到该区域设置中Smartling 帮助中心,存储库连接器常见问题解答
完全发布文件下载限制每次下载包含 500 个已翻译文件;“文件”选项卡每页显示 20 个文件。Smartling 帮助中心,如何下载翻译文件
存储库连接器区域设置映射1:1 — 一个 Smartling 语言环境对应一个存储库语言环境Smartling 帮助中心,存储库连接器常见问题解答

如何配置连接器,才能确保部分翻译不会破坏构建?

以下顺序适用于存储库连接器、CMS 连接器或直接文件 API 集成。

  1. 首先确定交付条件——决定目标位置是仅在文件对于某个语言环境完成时(Smartling 的 COMPLETED 触发器,或 GitHub Connector 在作业完成时的拉取请求)才接收文件,还是在每次更改时(ONCHANGE)接收文件。合并翻译拉取请求而不进行审核的团队应该继续按完成情况交付;流程中有审核步骤的团队可以按进度交付。
  2. 将检索类型设置为已发布— 在每个生产下载中使用 retrievalType=published,以便仅将已清除工作流的字符串写入目标位置。预留给测试分支,供审阅者查看进行中的工作,以及用于翻译开始前的布局测试的伪代码。
  3. 有意识地选择回退方式——将 includeOriginalStrings 保持为默认值,以便未翻译的键携带源文本并呈现界面;或者,当目标框架有自己的区域设置回退并且空值是它所期望的信号时,将其设置为 false。请先确认文件类型是该参数支持的五种类型之一,然后再使用该参数。
  4. 定义跨作业文件的完成范围— 如果资源文件在其第一个作业之后经常扩展,请使用“完全发布文件”选项进行手动下载,并要求 Smartling 将存储库连接器切换到 all-strings 条件,这样在新作业仍持有未翻译的键时,就不会交付文件。
  5. 监听完成和重新交付——注册每个语言环境的文件完成和作业完成的回调,或者轮询最近发布的文件端点,因为翻译可以在第一次交付后进行更正,并且集成必须获取更新后的文件(Smartling 帮助中心,教程:翻译作业和工作流)。

在连接器处配置部分翻译行为,适合以下团队……

  • 通过存储库连接器或文件 API 发送资源文件(JSON、Android XML、Java 属性、Gettext、YAML),并且无论翻译进度如何,构建都必须通过。
  • 在版本发布之间向现有文件添加新字符串,因此单个文件通常会跨越多个翻译任务。
  • 翻译成多种语言,这些语言的完成时间各不相同,并且希望每种语言的文件在完成翻译后立即到达。
  • 进行审校或后期编辑步骤时,需要明确区分正在翻译的译文和已发布的译文,以及最终交付的内容。
  • 依赖于目标框架自身的备用逻辑,并且需要控制缺失的翻译是以源文本的形式到达,还是以空值的形式到达。

当备用设置并非解决问题的合适位置时

  • 如果问题是何时应该在所有语言环境中发布一批翻译,那么答案是工作流暂停步骤或连接器发布状态(在批处理翻译发布控制页面上有介绍),而不是下载参数。
  • 如果翻译后的文件作为源文件重新上传到 Smartling,则问题在于存储库连接器的 pathRegex 同时匹配了源路径和翻译后的路径,而没有任何交付设置可以解决此问题。
  • 如果 CMS 连接器提供的是条目而不是文件,则在完成时按语言环境进行交付已经是 Contentful(条目)等连接器的行为,回退开关不适用。
  • 如果在发布后更正了翻译,则修复方法是通过回调或最近发布的投票来触发重新发送,而不是更严格的完成规则。

评估清单:关于部分翻译文件需要向供应商提出的问题

连接器会将什么内容写入一个尚未翻译的字符串?
请说明具体行为和默认行为。Smartling 的默认值是源语言字符串;空字符串是显式选择,并且该开关仅适用于 Gettext、Java 属性、自定义 XML、Android XML 和 JSON。

连接器能否等到文件完全翻译成特定语言环境后再进行传输?
确认这是默认设置,而不是附加功能。Smartling 的 Repository Connector 默认状态为 COMPLETED,GitHub Connector 会在作业完成后提交其拉取请求。

平台如何定义“完全翻译”:是指文件中的所有字符串,还是指所有已授权的字符串?
当作业中排除某些字符串时,两者就会有所不同。Smartling 的存储库连接器默认使用所有授权字符串,也可以切换到所有字符串。

正在翻译中的版本是否会出现在正式发布的下载文件中?
查找检索类型的控件。如果 retrievalType=published,Smartling 会将源字符串替换为任何仍在编辑或审核中的翻译。

文件在第一次作业完成后进行扩展会发生什么情况?
询问平台如何处理属于多个作业的文件。Smartling 的“完全发布文件”选项仅下载所有已授权作业中的完整文件,每次下载最多 500 个文件。

集成系统如何得知已交付的翻译后来被更正?
确认回调函数能够按文件、按语言环境、按作业触发,并且存在最近发布的端点用于轮询。

平台和存储库之间能否建立一对多的区域设置映射关系?
Smartling 的存储库连接器将语言环境 1:1 映射;类似的语言环境(例如 es 和 es-ES)通过在 Smartling 中创建两者并通过跨国利用共享翻译来处理。

Smartling如何处理其连接器中的部分翻译文件

Smartling 将其他平台通常捆绑在一起的三个决定分开处理:何时交付文件、哪些翻译符合要求以及如何填补空白。在自托管的 GitHub、GitLab 和 Bitbucket 存储库连接器中,repo-connector.conf 中的 downloadTranslations 节点将触发器设置为 COMPLETED(仅当文件的所有翻译都完成后才交付)或 ONCHANGE(每当翻译发生更改时就交付),将 retrievalType 设置为 PUBLISHED、PENDING 或 PSEUDO,并将 includeOriginalStrings 设置为控制未翻译的键是携带源文本还是空字符串(适用于 Gettext、Java 属性、自定义 XML、Android XML 和 JSON 文件)。默认交付条件是文件中的所有授权字符串都已发布到该区域设置,可以通过 Smartling 的解决方案架构师或支持人员将连接器切换为要求文件中的每个字符串。

托管的 GitHub 连接器会在作业完成后创建一个翻译分支和拉取请求,其中包含每种语言的一个文件,因此,只有当为预发布版本启用提前交付时,才会出现部分翻译的拉取请求。直接集成使用文件 API,其中下载端点接受 pending、published、pseudo 和 contextMatchingInstrumented 的 retrievalType 值;对于 published,仍在编辑或审核中的翻译将被替换为源字符串,并且包含工作流步骤的“预发布”设置中的预发布翻译。当某个语言环境中的文件处理完成以及某个作业完成时,回调函数会触发;最近发布的文件端点允许集成获取在首次下载后更正的翻译。

对于手动下载的团队,项目或作业的“文件”选项卡提供“当前翻译(进行中)”或“已发布翻译”,而作业的“文件”选项卡则添加了“完全已发布文件”,其中仅返回其所属的每个作业中已完成的文件,最多可返回作业所有页面中 500 个已翻译的文件。如果某种语言尚未完全发布,则标准下载包中仍包含未翻译位置的源文本,以便审校人员可以打开文件而不会遇到空白。同一系列控件涵盖内容连接器:基于文件的连接器(例如 Contentful(条目)和 Webflow)会在每个语言环境完全翻译完成后提供该语言环境,而 WordPress 插件可以在翻译完成或进度更改时下载,并提供用于布局检查的伪检索类型。

准备好见识一下 Smartling 的威力了吗?

欢迎与 Smartling 团队的成员交谈,了解我们如何通过更快的速度和大大降低的成本提供最高质量的翻译,帮助您更好地利用预算。