0Pricing
Angular Academy · 课时

提取并翻译消息

生成并填写翻译文件

提取并翻译消息 是 CoddyKit 上的免费 Angular Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Angular Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Angular Academy 课程共包含 4 节课。

从已标记文本到翻译文件

使用 i18n 标记文本后,Angular 可以将每条消息收集到翻译源文件中。翻译人员填写每种目标语言的内容,构建过程再将这些翻译合并回来。本课将介绍提取过程和文件格式。

运行 ng extract-i18n

CLI 命令 ng extract-i18n 会扫描应用中的已标记消息,并写入翻译源文件(默认为 messages.xlf)。

ng extract-i18n
# generates messages.xlf in the project root

选择输出格式和路径

您可以选择格式和目标位置。XLIFF(xlf)是默认格式;同时也支持 XLIFF 2 和基于 JSON 的 arb。

ng extract-i18n --format=xlf2 --output-path=src/locale

XLF 文件的结构

每条已标记的消息都会成为一个 trans-unit,其中包含 source(您的原始文本)和一个由翻译人员填写的空 target。

<trans-unit id="homeTitle" datatype="html">
  <source>Welcome to our store</source>
  <target></target>
</trans-unit>

创建各区域设置对应的文件

将 messages.xlf 复制为每个目标区域设置对应的文件,使用区域设置代码命名,然后翻译其中的目标文本。

src/locale/messages.xlf       # source
src/locale/messages.fr.xlf    # French
src/locale/messages.es.xlf    # Spanish

填写翻译

翻译人员会将每个空的 target 替换为本地化文本,同时保留相同的 id,以便 Angular 知道它对应哪个源文本。

<trans-unit id="homeTitle">
  <source>Welcome to our store</source>
  <target>Bienvenue dans notre boutique</target>
</trans-unit>

必须保留占位符

插值会显示为 <x> 占位符标签。翻译人员必须保留这些标签,但可以根据目标语言的语法调整其顺序。

<source>Hello, <x id="INTERPOLATION" equiv-text="{{name}}"/>!</source>
<target>Bonjour, <x id="INTERPOLATION"/> !</target>

更改后重新提取

添加或修改已标记文本后,请重新运行 ng extract-i18n。自定义 @@ ID 可以保留现有翻译;自动生成的 ID 可能发生变化,需要重新翻译。

在 angular.json 中配置区域设置

在项目的 i18n 配置下注册每个区域设置及其翻译文件,以便构建过程知道从哪里找到它们。

"i18n": {
  "sourceLocale": "en",
  "locales": {
    "fr": "src/locale/messages.fr.xlf",
    "es": "src/locale/messages.es.xlf"
  }
}

处理缺失的翻译

您可以告知构建过程如何处理未翻译的消息:error 会使构建失败,warning 会记录日志并使用源文本,ignore 则保持静默。在 CI 中使用 error 来发现遗漏。

"options": { "i18nMissingTranslation": "error" }

使用翻译工具

XLIFF 是行业标准,因此专业翻译平台(以及 Crowdin 或 Lokalise 等工具)可以导入提取出的文件,并将完成的翻译以相同格式导出。

快速检查

ng extract-i18n 会生成什么?

回顾

运行 ng extract-i18n,将已标记的文本收集到包含 trans-unit 的 XLIFF 源文件中。按区域设置复制该文件,在保留占位符的同时填写各个 target,在 angular.json 中注册区域设置,并设置 i18nMissingTranslation 来发现遗漏。稳定的 @@ ID 可以保护翻译,使其不受编辑影响。

常见问题解答

「提取并翻译消息」课时是免费的吗?

是的 — 「提取并翻译消息」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Angular Academy 课程的其余内容,请升级到 CoddyKit PRO。 Angular Academy 课程共包含 4 节课。

「提取并翻译消息」这节课中我会学到什么?

生成并填写翻译文件 你通过在浏览器中直接运行的动手代码来练习 Angular Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Angular Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Angular Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「提取并翻译消息」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Angular Academy 课中编写并运行代码吗?

能。每节 Angular Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 标记待翻译文本
  2. 提取并翻译消息
  3. 复数与选择(ICU)
  4. 构建本地化构建版本
← 返回 Angular Academy