国际化向导可让项目支持多语言。它会读取你的代码库,基于扫描结果逐步执行各步骤,最终生成一个用于打开 pull request 的任务。你无需手动输入语言代码或编辑 JSON;只需修改所需内容,且在合并前代码库不会发生任何变更。
所有者和管理员可运行该向导。从以下位置启动它:全球化 → 国际化:选择将项目国际化,或者点击项目行中的“启动向导”对于已经支持多语言的项目,设置 → 更改语言在其工作台中打开该向导以提出变更建议。
操作步骤
1. 扫描
Coroid 不会运行任何代码,仅读取默认分支内容。它会查找目录及其对应的语言、使用的框架,以及代码中直接写入的文本,并按文件统计数量。
- 已找到目录。向导会保留这些目录:Coroid 会添加相关校验规则并翻译缺失的内容。这一过程称为“采纳”。
- 尚未找到目录。Coroid 会将代码中的文本移入目录,并用查找引用替换原文本。这一过程称为“引入”。
- 已完成配置。该项目已有 Coroid 配置,向导会据此提出变更建议。
2. 源语言
产品编写时所用的语言;其他语言均由此语言翻译而来。向导会根据目录信息或代码中的文本自动识别源语言。任何语言均可作为源语言:比如瑞典语产品翻译成英语和德语的流程完全一致。
3. 语言
可逐个挑选语言,也可一次性添加整个市场的语言:使用人数最多的语言、欧洲、北欧、东亚、美洲或者从右向左书写的语言。每种语言都会显示其名称、是否为从右向左书写的语言,以及所需的复数形式数量。
地区变体可直接派生而非重新翻译。比如英式英语由美式英语派生而来,采用英国拼写规则;瑞士德语由德语派生而来,采用瑞士拼写规则,因此无需额外成本且能与母语言保持同步。
每一步都基于代码库已有的内容展开。仅修改指定的部分;在pull request被合并前,任何更改都不会生效。
- 扫描
- 源语言
- 语言
- 字符串
- 风格与术语
- 文化
- 质量与自动化
- 审核
可逐一选择语言,也可直接添加整个目标市场。诸如英式英语之类的地区变体可通过预设规则自动生成,无需重复翻译。
- Deutsch德语 · de · 2复数形式
- Français法语 · fr · 3复数形式
- 日本語日语 · ja · 1复数形式
- العربية阿拉伯语 · ar · 从右到左 · 6复数形式
- British English英国英语 · en-GB · 2复数形式采用英式拼写派生
国际化向导的语言步骤:每种语言标注其书写方向与复数形式,英式英语通过规则派生而来,可一次性添加目标市场。此为示意性数据。
4. 字符串
采纳模式下,可选择 Coroid 保留并翻译的目录;其键名和结构保持不变。引入模式下,可选择需将文本移入目录的文件;未选中的文件将维持原状。
5. 风格与术语
以上选项均为可选,且适用于所有语言:
- 正式或非正式语气。对于区分正式与非正式称呼的语言,比如德语Sie和du。默认情况下,译文语气会与源文本保持一致。
- 术语按原文保留。产品、品牌及功能名称在所有语言中均保持不变。
- 关于产品介绍。简要介绍产品及其受众,帮助译者选择合适的词汇。
6. 文化设置
不同市场对日期、数字和价格的书写方式各不相同。可选择代码为读者呈现的格式:向导会推荐所识别框架的格式化工具,比如 next-intl 或 react-intl,你也可以自定义格式。随后选择各市场使用的货币,默认采用该地区常用的货币。每个市场都会显示示例日期和数字、每周起始日以及纸张尺寸。Coroid 的代理程序会遵循这些设置;详情请参阅文化设置。
7. 质量与自动化
默认处于开启状态,后续也可随时调整:
- 每次变更时检查译文质量。该 全球化检查功能会在发现译文缺失、出错,或文本被写入代码而非目录时,反馈变更请求。
- 翻译在 Coroid 之外合并的字符串。若有人在未通过 Coroid 的情况下合并新文本,系统会生成相应任务进行翻译。
- 每晚应用修正建议。贡献者提交的获批建议会每晚整合成一个 pull request。
- 允许受邀人员提出措辞建议。你邀请的母语使用者可在网站上修正译文。详情请参阅 通过建议功能维护译文。
配置文件会保存最后一次的设置。下次所有者或管理员在合并 pull request 后打开全球化页面时,Coroid 才会启用这些设置,且仅启用一次:后续若关闭某项设置,它将保持关闭状态。
8. 审核
该项目摘要包括任务功能、源语言、目标语言及其派生关系、翻译量、需保留原样的术语、格式化程序和货币类型,以及合并后触发的操作。翻译费用按模型使用情况计费,与其他代理任务一致,且每项任务都有费用上限。
选择国际化。Coroid 会据此创建一个包含规格说明和验收标准的任务,并立即启动。
任务功能
- 采用会按照向导生成的配置写入配置文件,随后翻译所有缺失的字符串。
- 引入会对接你的框架,将所选文件的文本移入目录,添加语言路由、回退机制和从右到左的支持,然后进行翻译。
- 更改会编写新配置并修复受该更改影响的翻译内容。
任务最终会生成一份 pull request。一旦将其合并到默认分支,所有语言都会出现在本地化模块中,而全球就绪性检查也会读取代码中仍假定为单一语言的部分。
格式
Coroid 支持读取以下格式的目录:
| 格式 | 适用场景 |
|---|---|
| ICU JSON | 包含 ICU 复数和选择规则的消息文件 |
| i18next JSON | i18next 和 react-i18next 目录,包含复数后缀 |
| Vue i18n JSON | vue-i18n 消息,包含关联消息和管道复数形式 |
| Rails YAML | config/locales/*.yml,包含%{name}插值及复数键 |
| gettext PO | .po文件和.pot模板,包含Plural-Forms每种语言的 |
| Markdown 和 MDX | 语言文件夹下的文档页面(docs/en/…):文本、图片描述及选定的前置元数据字段;代码和标记内容保持原样 |
| 自定义 | 其他任何格式,只需在仓库中通过小型适配器命令即可支持。 |
配置文件
向导会写入.coroid/i18n.json。它用于描述你的仓库,因此存放在仓库中,并通过拉取请求进行变更:
{
"version": 1,
"cli": { "version": "1.16.0", "sha256": "…" },
"sourceLocale": "en",
"targetLocales": ["de", "fr", "ja", "ar"],
"derivedLocales": [
{ "locale": "en-GB", "from": "en", "rules": "en-gb-spelling" }
],
"catalogs": [
{
"id": "ui",
"format": "i18next-json",
"source": "messages/{locale}.json"
}
],
"protectedTerms": ["Storefront"],
"localeInstructions": {
"de": "Address the reader informally (du)."
},
"world": {
"formatter": "useFormatter from next-intl",
"currencies": { "de": "EUR", "fr": "EUR", "ja": "JPY", "ar": "SAR" }
}
}cli会锁定精确的引擎版本及其校验和。每次运行时,Coroid 都会下载并验证该版本,以免更新意外改变输出结果。derivedLocales会列出规则生成的区域变体。protectedTerms和localeInstructions会保存你所选的内容于 样式和术语,以及world你所选的内容会保存在文化。 全球化检查会列出 其余的world。
该文件还可存储术语表、产品上下文、每种语言的翻译路径以及贡献者的建议绑定信息。
设置 → 配置文件工作台中的该项会显示默认分支上的精确文件。若要在其中修改,请编辑提案并选择提议更改:Coroid 会开启一个任务,应用该文件并修复受更改影响的翻译内容。若涉及语言和样式,使用向导会更简便。