文档

国际化项目

运行国际化向导即可让项目支持多语言。Coroid 会读取代码库,推荐合适的语言和设置,最终生成一个 pull request。

国际化向导可让项目支持多语言。它会读取你的代码库,基于扫描结果逐步执行各步骤,最终生成一个用于打开 pull request 的任务。你无需手动输入语言代码或编辑 JSON;只需修改所需内容,且在合并前代码库不会发生任何变更。

所有者和管理员可运行该向导。从以下位置启动它:全球化 → 国际化:选择将项目国际化,或者点击项目行中的“启动向导”对于已经支持多语言的项目,设置 → 更改语言在其工作台中打开该向导以提出变更建议。

操作步骤

1. 扫描

Coroid 不会运行任何代码,仅读取默认分支内容。它会查找目录及其对应的语言、使用的框架,以及代码中直接写入的文本,并按文件统计数量。

  • 已找到目录。向导会保留这些目录:Coroid 会添加相关校验规则并翻译缺失的内容。这一过程称为“采纳”。
  • 尚未找到目录。Coroid 会将代码中的文本移入目录,并用查找引用替换原文本。这一过程称为“引入”。
  • 已完成配置。该项目已有 Coroid 配置,向导会据此提出变更建议。

2. 源语言

产品编写时所用的语言;其他语言均由此语言翻译而来。向导会根据目录信息或代码中的文本自动识别源语言。任何语言均可作为源语言:比如瑞典语产品翻译成英语和德语的流程完全一致。

3. 语言

可逐个挑选语言,也可一次性添加整个市场的语言:使用人数最多的语言、欧洲、北欧、东亚、美洲或者从右向左书写的语言。每种语言都会显示其名称、是否为从右向左书写的语言,以及所需的复数形式数量。

地区变体可直接派生而非重新翻译。比如英式英语由美式英语派生而来,采用英国拼写规则;瑞士德语由德语派生而来,采用瑞士拼写规则,因此无需额外成本且能与母语言保持同步。

国际化
国际化向导

每一步都基于代码库已有的内容展开。仅修改指定的部分;在pull request被合并前,任何更改都不会生效。

第 3 步,共 8 步
需添加的语言

可逐一选择语言,也可直接添加整个目标市场。诸如英式英语之类的地区变体可通过预设规则自动生成,无需重复翻译。

5种语言
  • 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 JSONi18next 和 react-i18next 目录,包含复数后缀
Vue i18n JSONvue-i18n 消息,包含关联消息和管道复数形式
Rails YAMLconfig/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 会开启一个任务,应用该文件并修复受更改影响的翻译内容。若涉及语言和样式,使用向导会更简便。