跳至内容

除非您接受,否则可选的分析、会话录制和广告将保持关闭。您可以拒绝它们并继续使用 Transglot。随时可在 Cookie 偏好设置 中更改您的选择。 Cookie 政策

适用于每天合并代码的团队

持续本地化: 每次合并,每种语言同步就绪。

持续本地化会在代码变更时即时翻译新增和修改的字符串,而非在每次发布前单独进行。每种语言都能随时与所需代码一起发布。

这是两种工作方式的模拟演示,并非实际测量数据。请点击“合并更改”并阅读右侧列:这代表该语言用户当前看到的内容。
acme / web
mainAdd a gift cardcheckout.gift_card
frAjouter une carte cadeau已翻译
deGeschenkkarte hinzufügen已翻译
jaギフトカードを追加已翻译
arأضف بطاقة هدية已翻译
pt-BRAdicionar vale-presente已翻译
当前可发布的语言5/5
落后于主分支的字符串无
简要解答

什么是持续本地化?

持续本地化是一种工作方式:新增和修改的字符串一旦变更便自动进入翻译流程,译文无需人工排期即可直接回流到产品中。

由于翻译从未停止,因此不存在专门的“翻译阶段”。开发人员合并字符串后,译文会随代码流同步更新,发布不再依赖任何人的文件交付。

它是持续交付中的本地化环节。如果团队每天合并代码但每几周才移交一次翻译,那么每月大部分时间各语言版本都会落后于代码。持续本地化可将这一差距缩短至单次运行周期。

这并不意味着机器翻译结果未经审阅就直接上线。您可以决定哪些字符串需要人工处理,而发布版本只包含已审阅的内容。

持续本地化与传统本地化对比

区别在于翻译发生的时机, 而非由谁执行。

译者、审校人员和术语库在两列中均存在。不同的是工作开始的时机以及每个任务的大小。
并排显示
翻译发生的时间
每次发布前的一个阶段
触发因素
有人导出文件
每个任务的大小
一次性处理数周的字符串
发布等待的内容
等待文件返回
后期文案变更
另一次往返流程
译者的工作依据
字符串电子表格
发布时的语言
分批进行,一波接一波
一个字符串,从开始到结束

持续本地化的工作原理

跟随一个新字符串走完整个流程。每个环节都展示了您实际会看到的内容。

您的终端,或您的 CI 日志
+ "checkout.gift_card": "Add a {brand} gift card"
$ git push origin main
$ transglot push --wait
push locales/en.json (en, json_nested)
Batch: #4182
$ transglot pull
written locales/fr.json
written locales/ja.json
checkout.gift_card
源Add a {brand} gift card
frAjouter une carte cadeau {brand}Glossa 草稿
de{brand}-Geschenkkarte hinzufügen来自记忆库,0 个词
ja{brand} ギフトカードを追加Glossa 草稿
arأضف بطاقة هدية {brand}Glossa 草稿
四道关卡,一次运行
占位符1 处已修复
复数形式通过
术语表词条通过
时长通过
ja · 占位符丢失,已修复一次,再次检查ギフトカードを追加{brand} ギフトカードを追加
cart.save
源文本已更改Save Save draft
frEnregistrer由人员审核:已保留,已向您报告建议: Enregistrer le brouillon
deEntwurf speichern机器行:再次翻译
拉取请求就地更新
更新翻译transglot/sync → main开启中,每个仓库一个
locales/fr.json+3 −1
locales/de.json+3 −1
locales/ja.json+3 −1
或者,在 GitHub 的拉取请求中评论/translate

变更通过 CLI、GitHub Action 或 Git 托管平台上的应用到达 Transglot。源文件以 20 种原生格式之一进行解析,并将每个字符串与项目中已有的内容进行比对。只有新增和变更的字符串才会进入下一步。

来自翻译记忆库的完全匹配会填充该行且不消耗字数。剩余部分将连同您的术语库、风格指南以及该键的上下文一起发送给 Glossa。

每次运行都会检查每一行的占位符、复数形式、术语表词条和长度。损坏的占位符、缺失的复数形式或被禁止的术语表词条会被修复一次并再次检查,如果第二次仍失败则会被拒绝,不会发布。仅超出长度的行会被写入,从团队计划开始,自动批准或 QA 运行会将其标记为待审核。

运行绝不会覆盖人员已编辑或审核过的行。如果其源文本后来发生变化,译文将保留,运行会统计该行并通知您,从团队计划开始,建议的更新会等待在一旁供人员接受。

Git 应用将语言环境文件提交到一个同步分支,并保持一个拉取请求为最新状态。在 GitHub 上,在拉取请求中评论 /translate,文件就会落到该拉取请求自己的分支上。或者发布到 CDN,正在运行的产品无需发布即可读取更改。

团队常踩的坑

持续本地化出错的六种方式,以及如何避免

运行覆盖了人员的工作成果

每位撰写者都会先检查行的状态:运行、记忆匹配和推送。人员编辑或审核过的行会保留,运行会报告它。

法语,已审核,源文本刚更改

已保留,已统计,已报告

损坏的字符串到达生产环境

每个传入的令牌都必须原样传出。在 ICU 项目中,会在渲染时抛出错误的消息会被排除在拉取请求、连接器和 CDN 包之外,并在运行日志中明确标识。

{count, plural, one {# article}

从文件中排除,并在运行中标识

仓库中充斥着机器人创建的拉取请求

每个仓库仅有一个同步分支和一个拉取请求。两次快速推送会合并到该分支,而不是创建第二个拉取请求。

#812 #815 #819 #823 l10n 更新

#812 transglot/sync,原地更新

源文本编辑导致旧翻译过时

每个目标行都记录了其对应的源文本,因此一旦字符串发生更改,系统会立即识别出所有语言中的对应翻译已过期,并仅重新处理该键。

“保存”变为“保存草稿”。fr、de、ja 仍显示为“保存”

fr、de、ja 针对该键重新运行

每次运行都会对整个项目再次计费

运行规模取决于变更内容。未更改的字符串不会发送,完全匹配的记忆库条目不消耗字数,而由人工拥有的行在任何费用产生前都会被拒绝处理。

文件包含 48,000 字

本次运行:60 字

未完成的拉取操作会清空区域设置文件

如果服务器报告某区域设置没有条目,拉取操作将拒绝覆盖含有内容的文件,并以退出代码 1 终止,从而停止流水线。

拉取:ja 有 0 个条目,文件包含 1,204 个

拒绝使用空包覆盖 locales/ja.json

  • run 4182 fr:草稿中缺少占位符,重试时已修复
  • run 4182 de:保留了 3 行,由人工拥有
  • run 4182 ja:41 行来自记忆库,0 字
  • run 4183 ar:重试后仍缺少复数形式,该行被拒绝
  • pull 已写入 locales/pt-BR.json
  • sync transglot/sync 已更新,拉取请求 #812
与您正在比较的两个对象进行对比

三者均连接到您的仓库。 区别在于合并时的处理方式。

数据摘自各公司于 2026 年 11 月 5 日发布的官方页面。价格信息来自下方链接的比较页面,其中展示了套餐和计算方式。价格和套餐可能会变动,请在决策前核实。

Transglot
新字符串已合并
默认情况下已翻译
推送会启动运行。项目设置可将其关闭。
翻译未通过检查
修复一次,随后拒绝
针对每次运行中的每一行,若存在损坏的占位符、复数形式或禁用术语,则进行处理。长度超限会被记录。在 ICU 项目中,损坏的行不会进入拉取请求、连接器及 CDN。
有人已编辑该行
运行将拒绝写入
记忆匹配和推送也是如此。如果后续源文本发生更改,运行将报告该行。
繁忙仓库中的拉取请求
一个分支,一个拉取请求
每次推送时原地更新。
套餐计数内容
每种语言翻译一次的字数
完全记忆匹配免费。存储字符串免费。
AI 费用构成
套餐包含的字数
不单独计费。
相同工作量:10 种语言中的 5,000 条字符串
$39/月
Team,含翻译
GitHub、GitLab、Bitbucket、Azure Repos、CLI 和 MCP 服务器
全部支持
Git 应用从 Team 版开始提供,涵盖云端版本。
使用您已在运行的工具

从字符串所在位置启动。 所有入口均汇入同一管道。

无论字符串通过哪个入口进入,都共享相同的记忆库、术语表、质量门禁和审阅流程。
.github/workflows/translations.yml
on:
push:
branches: [main]
jobs:
translations:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v7
- uses: transglot/transglot-action@v1
with:
token: ${{ secrets.TRANSGLOT_TOKEN }}
首要步骤

如何设置持续本地化

  1. 从代码中提取字符串

    每个面向用户的字符串都需要在区域设置文件中拥有稳定的键。Transglot 支持 20 种格式,因此您可以保留现有格式。

  2. 连接代码仓库

    初始化命令会查找您的区域设置文件,通过浏览器完成登录,上传已有内容并执行首次翻译。

  3. 每次合并时运行

    添加 GitHub Action,从任何其他 CI 调用 CLI,或为 GitHub、GitLab、Bitbucket 或 Azure Repos 安装应用。

  4. 确定需要人工处理的内容

    在拉取规则上将 min_state 设置为 reviewed,该文件将仅包含经人工审核的字符串。若不设置,草稿也将发布。

根据您的数据进行估算

每次合并运行的成本: 发生变动的字词。

一个单词指源语言中的一个词,按每种目标语言分别计数。运行规模取决于变动内容,因此即使项目庞大,若一次合并涉及五种语言中的十二个单词,则计为六十个单词。

25
40
6
20,000
每月字数26,000基于这些数据 · 每周 25 次合并,每次 40 个单词,6 种语言

适用于 Starter:$19/mo,每月 300,000 个单词。

这约占配额的 9%。

首次运行(一次性)120,000您每种语言中现有的字符串。导入的翻译不会重新翻译。

此统计仅包含翻译。质量检查、品牌语调草稿和修复也计入单词数,而来自记忆库的完全匹配不产生费用。CLI 和 GitHub Action 从 Starter 套餐开始支持,GitHub、GitLab、Bitbucket 和 Azure Repos 的应用从 Team 套餐开始支持。

它无法为您做的事

持续本地化无法解决的三个问题

仍嵌入代码中的字符串

流水线只能翻译可读取的内容。硬编码的字符串以及由部分拼接而成的句子必须首先修复,这通常是导致发布停滞的主要原因。

无人负责术语

自动化可以移动字符串,但无法决定产品如何命名。必须有人负责管理术语表,否则无人阅读的语种会逐渐偏离标准而无人察觉。

需要人工判断的文案

法律文本、定价和品牌标语应由人工处理。将其送审,并在有人签字确认之前,不要将其包含在发布文件中。

持续本地化常见问题解答

团队在启用前常问的问题。

什么是持续本地化?
一种工作方式:新增或变更的字符串会在更改时自动发送翻译,译文无需按计划交接即可返回产品中。它用每次更改后的小规模运行取代了发布前的翻译阶段。
传统本地化将字符串批量放入文件,在临近发布时发出并等待结果。持续本地化则在每次更改发生时即时移动内容,因此任务粒度小,各语种同步上线,后期的文案变更只需重新运行单个密钥,而无需再次往返。
不是。CI/CD 负责构建、测试和发布代码。持续本地化则让翻译与之并行推进。它们在流水线中交汇:运行测试的推送操作也可以发送字符串进行翻译并取回文件。
不需要。GitHub、GitLab、Bitbucket 和 Azure Repos 的应用会在推送时自动响应,无需向流水线添加任何内容;内容连接器会对 CMS 或商店中的更改做出反应。如果您希望将其集成到自己的工作流中,可以使用 CLI 和 GitHub Action。
不是。草稿可以直接发布,或者拉取规则可以仅包含经人工审核的内容(按文件划分)。审核人员在编辑器中工作,每行旁边都显示术语表词条、记忆库匹配项和截图。
不会。运行、记忆库匹配和推送都会先检查该行,人工编辑或审核过的行会被保留。如果其源文后来发生更改,译文将保持不变,运行会统计并报告该行,且在团队计划中会附加建议更新供人员接受。
对于小团队来说,这往往更重要,因为没有人专门负责交接工作。如果您只使用一种语言发布且没有第二种语言的计划,则可以暂缓使用。
运行开始前会预估规模。免费套餐有硬性上限。付费套餐在达到配额时会停止,除非您启用了按量超额计费(该功能会在您设定的支出上限处停止)。在 CI 中,如果运行即将超过限制,CLI 将以代码 3 退出,以便流水线采取相应措施。
是的,支持 GitLab.com、Bitbucket Cloud 和 Azure DevOps Services。这些应用不支持自托管的 GitLab 或 Bitbucket Data Center,但 CLI 可以在任何拥有 Node 22 且能访问 API 的 CI 环境中运行。
可以。内容连接器从 CMS、商店或帮助中心读取数据,双向连接器会将已审核的语言写回。有些连接器仅支持导入,每个连接器的页面都会说明具体支持情况。
可以。将区域设置发布到 CDN,您的产品即可通过运行时 SDK 在运行时读取。最新 URL 缓存时间为 60 秒,每个发布的版本都有各自的 URL,并保留最近二十个版本。
导入器会从 Lokalise, Phrase, Crowdin, Transifex, Weblate and POEditor 引入项目、密钥和现有翻译。导入的翻译被视为人工工作,因此不会被运行覆盖。它在任何套餐上都是免费的,且只需运行一次。