Coroid 使用其自身支持的十三种语言引擎来翻译您的产品。您的目录文件会保留在代码库中。对它们的每次更改都会生成对应任务和 pull request,只有新增、变更或出错的字符串才会被发送给模型。
本地化功能在主导航栏中有独立入口。它会在同一页面展示每个项目的所有语言,并为每个项目提供专属工作台。尚未支持多语言的项目会从国际化向导。
所有项目一览
本地化页面首先显示您有权访问的项目。每行会展示项目的源语言、支持的语言数量、字符串总数,以及该项目所有语言的翻译进度条。
每个项目旁的小地球图标上会按语言标注一个圆点:语言翻译完整则显示绿色,存在缺失或变更的字符串则显示青色圆环,有出错字符串则显示琥珀色。
让每个项目都能使用用户的母语进行交互,并在产品迭代过程中始终维持这种语言一致性。
- 门店页面英语 源代码 · 5 多种语言 · 1,240 多个字符串97.2%135 多个字符串正在等待
- 帮助中心瑞典语 源代码 · 2 多种语言 · 318 多个字符串100%所有语言均已完整翻译
- 启动向导预订应用尚未进行国际化处理
本地化:每个项目的语言如同环绕小地球仪的珠粒,展示已翻译的比例及仍需处理的部分。此为示意性数据。
没有翻译内容的项目会显示为尚未国际化。所有者和管理员可以从该行启动向导,也可以从国际化项目页面顶部启动该流程。
工作台
打开项目后会显示其工作台:左侧为各个板块,旁边为当前打开的板块内容。
| 板块 | 用途说明 |
|---|---|
| 概览 | 各语言的翻译进度,以及用于翻译缺失内容的操作入口 |
| 字符串 | 各语言下的所有字符串,仅展示需要处理的条目 |
| 建议 | 贡献者提出的修正建议,等待最终确认 |
| 交换 | 供第三方机构、翻译工具和电子表格使用的文件,以及对应的翻译结果 |
| 贡献者 | 可提出文本建议的人员及其支持的语言范围 |
| 自动化任务 | 每晚会自动应用修正内容,同时也会处理在 Coroid 外合并的字符串翻译。 |
| 设置 | 语言设置、翻译检查规则、访问权限与费用统计,以及配置文件 |
建议、贡献者和自动化任务相关内容详见通过建议维护翻译内容。
工作台会读取默认分支下的目录文件。一旦这些文件发生更改,下次有人打开项目时 Coroid 会重新读取相关内容;在此之前概览页会显示正在读取的状态。Coroid 不会执行代码库中的代码来完成此操作。使用自定义适配器的目录文件不会被展示;但其字符串仍会在任务中被检测。
概览:每种语言对应一行
概览页开头会显示四项统计数据:字符串总数、支持的语言数、已翻译比例,以及需要处理字符串的数量。其下方会按语言逐行展示三个阶段:
- 国际化。该语言对应的目录文件已创建并包含相关字符串。
- 本地化。所有字符串都根据当前源文本完成翻译。
- 验证。不存在出错字符串:所有字符串都能正常解析,保留源文本的占位符,且符合对应语言的复数形式要求。
语言对应的下一步进度由该行停止的位置决定。绿色停止标识表示已完成,青色圆环表示需继续处理,琥珀色则表示存在出错字符串。
- 概览展示每种语言的当前状态
- 字符串涵盖所有语言下的每条字符串
- 建议等待最终决策
- 交换用于其他工具的文件
- 贡献者可提出措辞建议的人员
- 自动化夜间及合并时自动执行的任务
- 设置语言、访问权限及相关开销设置
每种语言都要经历三个阶段。其下一步取决于当前所处的处理环节。
- English英语 · en · 来源
1,240字符串位于3目录中
- Deutsch德语 · de100%完成通过
- Français法语 · fr98%18 缺少多个字符串通过
- 日本語日语 · ja96.3%42 缺少多个字符串3 损坏的字符串组
- العربية阿拉伯语 · ar94.6%64 缺少多个字符串通过
- British English英国英语 · en-GB · 源自 英语100%派生且最新通过
工作台概览:每种语言沿国际化、本地化及验证流程排列,清晰呈现阻碍进展的缺口。此为示意性数据。
“本地化”下方的进度条本地化进度条从头开始显示:深绿色代表人工审核通过的字符串,浅绿色代表模型生成的字符串,琥珀色代表需处理的字符串,空白部分则代表缺失的字符串。进度条下方的文字会说明具体缺口,例如缺失42个字符串,点击后可直接打开这些字符串。
通过规则从另一种语言派生出的语言,比如英式英语从美式英语派生而来,当规则已应用于所有字符串时,会显示派生且已更新。
翻译缺失内容
所有者和管理员在概览页顶部会看到一个操作入口,翻译该入口会显示需要处理的字符串数量:包括缺失、源文本变更或出错的字符串。翻译工作在工作台中进行,分为两步:
- 翻译记忆库。如果贵组织其他项目已用完全相同的源文本翻译过某字符串,系统会直接复用已有译文。人工翻译的结果优先于机器翻译结果。此过程无需调用模型,也不产生额外费用。
- 翻译模型。代码库中指定的引擎会通过翻译网关完成剩余字符串的翻译,同时会逐一校验回复内容是否符合占位符和复数形式要求。
翻译过程中,统计数据下方的面板会实时显示已翻译的字符串数量和本次翻译消耗的费用,每种语言的进度条会随着字符串的生成逐渐填充条纹图案。停止翻译该操作会终止翻译流程;已生成的翻译内容会保留下来。
- 概览展示每种语言的当前状态
- 字符串涵盖所有语言下的每条字符串
- 建议等待最终决策
- 交换用于其他工具的文件
- 贡献者可提出措辞建议的人员
- 自动化夜间及合并时自动执行的任务
- 设置语言、访问权限及相关开销设置
每种语言都要经历三个阶段。其下一步取决于当前所处的处理环节。
目前已写入的字符串:71 / 133
从翻译记忆库中复用内容,无需额外成本:26 · US$0.04 已消耗,未超出 US$5.00 限额
- Deutsch德语 · de完成
- Français法语 · fr翻译内容已准备就绪,可提交:24
- 日本語日语 · ja正在翻译:已写入 28 / 45
- العربية阿拉伯语 · ar正在翻译:已写入 19 / 64
机器翻译运行期间的概览:印刷机正常运转,各语言文本随字符串传入而填充,翻译记忆库会匹配其他项目已有的表述。此为示意性数据。
翻译结果不会直接写入代码库,而是会先等待提交将其与其他更改一同提交,标记为机器翻译,以便你能在Strings中检查它们。Strings首先。已被他人编辑或贡献者建议的字符串会留给对应人员处理。
Strings
StringsStrings列表会展示每个字符串的源文本及其在某一语言中的对应值。它会在Internationalization wizard中打开。待处理:指缺失、源文本已变更、存在错误或与源文本一致的字符串。可选择其他语言、目录,或通过关键词和文本进行搜索。
| 状态 | 含义 |
|---|---|
| 缺失 | 该字符串没有对应的翻译 |
| 源文本已变更 | 该字符串翻译完成后源文本发生了变动 |
| 错误 | 该翻译无法解析、占位符与源文本不一致,或其复数形式不符合该语言规范 |
| 与源文本一致 | 该翻译与源文本完全相同 |
| 机器 | 由模型生成且未经人工审核 |
| 已审核 | 由人工编写或修正 |
| 派生 | 由规则根据另一种语言生成 |
选择一个字符串即可查看其在所有语言中的对应值。占位符和标记会以锁定状态显示,因为它们必须原样保留用于翻译。针对所选语言,详情还会说明该值的编写者、存在的问题,以及若为复数消息则该语言所需的复数形式。
- 概览展示每种语言的当前状态
- 字符串涵盖所有语言下的每条字符串
- 建议等待最终决策
- 交换用于其他工具的文件
- 贡献者可提出措辞建议的人员
- 自动化夜间及合并时自动执行的任务
- 设置语言、访问权限及相关开销设置
涵盖所有语言的全部字符串。通过筛选功能可快速定位需要处理的内容。
| 源文本 | 日本語 |
|---|---|
| Total: {amount} | 合計: {price}内容有误 |
| Your cart is empty | 暂未翻译缺失 |
| Welcome back, {name} | 暂未翻译缺失 |
| Prices include <b>VAT</b> | 価格には<b>消費税</b>が含まれます内容有误 |
| Weekly deals | 暂未翻译缺失 |
- 日本語 · 日语内容有误合計: {price}
由模型生成 · 占位符与源文本不符
- Deutsch已审核Gesamt: {amount}
- Français机器生成Total : {amount}
- العربية机器生成الإجمالي: {amount}
- British English派生内容Total: {amount}
工作台中的字符串,筛选出的需处理的日语字符串;打开的字符串会显示其占位符作为锁定芯片,以及各语言的对应值。此为示意性数据。
编辑并提交
所有者和管理员可在Strings中修正翻译。Strings。选择一个字符串,点击编辑即可在对应语言中修改,随后保存更改。编辑器会将源文本中的占位符以可插入的芯片形式展示,并实时校验更改内容:包括占位符、该语言所需的复数形式、术语表中的术语以及文本长度。保存时,Coroid会再次依据默认分支校验相关内容。
建议在编辑器中,建议功能会为该字符串提供翻译方案:若其他项目中有相同翻译则取自翻译记忆库,否则由Translator模型生成。选择采用此翻译即可将其填入编辑器;除非你保存更改,否则不会真正存储。
已保存的更改会显示在Strings下方的栏中,你可在此审核或丢弃每条更改。提交提交操作会将它们与已获批的贡献者建议及机器翻译合并为单个任务。该任务会使用锁定的引擎应用这些确切值,并生成一个pull request。一次提交最多可包含5,000处更改,其余更改需等待下一次提交。在该pull request合并前,字符串会显示为未提交或正在应用。
已提交的机器翻译会保留在引擎缓存中,仍被视作机器翻译,因此仍计入机器翻译直到有人完成审核为止。
编辑功能需在配置文件中开启贡献权限;国际化向导默认情况下会开启该功能。贡献者也可以建议更优的措辞在您自己的站点上使用。
交换文件
在交换模块下,您可以下载用于代理机构、翻译工具或电子表格的字符串,再将他们的翻译内容导回。
| 格式 | 每文件包含的语言数 | 适用场景 |
|---|---|---|
| XLIFF 1.2和2.0 | 一种 | 翻译工具和代理机构;占位符会以锁定标签的形式呈现 |
| Gettext PO | 一种 | Poedit、Weblate及其他Gettext工具 |
| CSV和Excel | 所有语言 | 电子表格形式,各语言内容并列显示 |
| JSON | 一种 | 键与翻译内容 |
| Apple String Catalog | 所有语言 | Xcode |
| Apple .strings | 一种 | Xcode项目 |
| Android strings.xml | 一种 | Android Studio |
| Flutter ARB | 一种 | Flutter |
导出文件包含待处理或全部的字符串。占位符及复数消息会原样保留。
导入操作会先展示所有行,之后才会保留有效内容。新的翻译和变更可以被接受。Coroid会过滤掉项目中不存在的键、源文本更新后生成的翻译、损坏的占位符,以及缺少对应语言形式的复数消息。被接受的行会变成待提交至Commit的变更。Commit,就像在Strings中进行的编辑一样。Strings。
JSON、.strings文件和Android文件不会标注所包含的语言类型。Coroid会从文件名中提取相关信息,例如storefront-de.json,或者询问用户。
检查每一项变更
该TranslationsTranslations在Quality Control中的检查会在任务QA阶段和Pull Request阶段运行,且仅针对变更涉及的字符串。一旦pull request被合并,向导会默认开启此项功能;设置会显示该功能是否开启,并在Quality Control中打开相关页面。在概览页面,查看最后一次检查结果位于Verify会打开最新一次的运行结果。
每个问题都会生成带有问题代码的发现结果:
| 代码 | 含义 | 默认会阻断此类问题 |
|---|---|---|
missing | 该字符串没有对应的翻译 | 是 |
invalid_syntax | 翻译无法解析,例如ICU格式错误 | 是 |
placeholder_mismatch | 占位符与源文本不一致 | 是 |
plural_categories | 缺少该语言所需的复数形式 | 是 |
stale | 源文本在字符串翻译完成后发生了变更 | 否 |
您可以在检查的设置中选择需要阻断的代码。如果配置文件中有相关规则,术语表、长度限制和违禁词规则也会生成对应的代码。
- 打开ui · checkout.total · fr: missing翻译检查 · 未翻译
- 打开ui · nav.deals · de: stale翻译检查 · 源文本变更导致翻译过时
- 正在修复ui · cart.items · ja: placeholder_mismatch翻译检查 · 占位符与源文本不符
- 已修复ui · cart.count · ar: plural_categories翻译检查 · 该语区缺少复数形式
翻译检查的质量发现结果,每个问题对应一个代码。仅为示例数据。
当翻译发现的错误导致任务受阻时,开发者代理会采用固定流程修复:它会为该任务开启翻译会话,并对变更的字符串运行引擎。它绝不会手动编辑目标目录。
Translator模型
翻译功能在AI的Profile中有独立角色配置,Translator,与Architect、Developer、QA和Reviewer并列。默认情况下它使用Hy-MT2翻译模型,在您的组织策略允许时,会以GPT-6 Luna作为备用模型。您可以像调整其他角色一样,在AI Profile中修改其映射关系。
引擎还会按大小对字符串进行批量处理,验证每条回复是否符合您的占位符和复数规则,若字符串验证失败则会重试或升级处理。
费用
所有套餐都支持翻译功能。翻译请求会通过Coroid的翻译网关发送,并作为模型使用情况计入您组织的账单,这与代理运行的费用计算方式一致。翻译任务与其他任务一样,会占用套餐规定的代理时长配额。
使用默认的Translator路由时,每1000个字符串、每种语言的翻译成本约为两美分。我们测试发现,将包含2000个字符串的目录翻译成10种语言的成本约为0.33美元。
- 仅变更内容会产生费用。引擎会以源文本为键缓存结果,因此未变更的字符串无需再次发送。
- 每个任务和每次运行都有翻译数量限制。任务的会话会在达到花费限额后停止,默认限额为1美元;Translate在工作台中运行的任务限额为5美元。项目可以在Settings → Access and spend下设置更低的限额。Settings → Access and spend。
- 翻译记忆库不收取任何费用。贵组织在其他地方已翻译的字符串会被直接复用,无需调用模型。
- 读取操作不收取费用。工作台和Translations检查功能会读取您的目录,但不会发起模型调用。
在Coroid之外进行翻译
引擎是一款命令行工具,coroid-i18n。您自己的CI可以使用相同的锁定版本,并搭配自定义的OpenRouter密钥。在Coroid内部,任务始终通过翻译网关发送请求,因此费用和限额会统一管理。