翻译与国际化Skill

自动化翻译与国际化

一、翻译与国际化Skill的设计

翻译与国际化Skill是一种专为自动化处理多语言翻译和国际化配置而设计的AI能力模块。它能够自动完成代码注释、技术文档、UI文本的翻译工作,同时支持生成和维护国际化配置文件(如JSON、YAML、PO等),确保多语言项目中的翻译一致性和术语统一性。

该Skill的核心价值在于帮助开发者摆脱繁琐的手工翻译工作,让AI自动识别源代码中的待翻译文本,调用翻译引擎进行处理,并生成符合目标语言习惯和项目规范的翻译结果。无论是个人开源项目还是企业级国际化产品,翻译与国际化Skill都能显著提升本地化效率。

多语言双向翻译
支持中文↔英文、中↔日、中↔韩等多语言方向,覆盖主流编程语言和技术文档场景。
格式感知翻译
智能识别代码块、模板语法、占位符和标记语言,仅翻译文本内容,保留技术格式不变。
术语一致性管理
基于术语表和翻译记忆,确保相同技术概念在全文翻译中保持翻译一致。
i18n文件自动化
自动读取源码提取待翻译键值对,生成多语言国际化文件(JSON/YAML/PO/Properties)。
设计理念:翻译与国际化Skill遵循"一次配置,多语言输出"的原则。开发者只需定义好源语言文本和术语规则,Skill即可自动完成从文本提取、翻译到文件生成的全流程。目标是在保证翻译质量的前提下,将国际化的工作量降低80%以上。

1.1 Skill的核心能力矩阵

能力维度 具体功能 适用场景
文本翻译 代码注释、文档、UI文本、错误消息 开源项目本地化、文档国际化
文件格式转换 JSON/YAML/PO/Properties/Markdown 前端i18n、后端国际化配置
术语管理 术语表建立、一致性检查、偏差识别 技术文档翻译、API文档本地化
质量控制 格式校验、占位符完整性、上下文感知 生产环境国际化发布前检查
使用建议:在项目初期就将翻译与国际化Skill纳入CI/CD流程。每次代码提交后自动触发翻译更新,可以避免积压大量待翻译文本,确保国际化与功能开发同步推进。

二、代码注释和文档翻译

代码注释和文档翻译是翻译与国际化Skill最基础也是最核心的功能之一。它能够自动识别源代码中的注释块(支持单行注释//、多行注释/* */、文档注释///、以及脚本语言中的#注释),在保持代码结构不变的前提下,将注释内容准确翻译为目标语言。

对于README、API文档、CHANGELOG等技术文档,Skill能够解析Markdown、reStructuredText、AsciiDoc等常见文档格式,翻译正文内容的同时完整保留标题层级、列表结构、代码块和超链接等格式标记。

2.1 注释翻译示例

原始代码(Python):

# Calculate the weighted average of the input array # Parameters: # data - list of numerical values # weights - list of weight coefficients # Returns: # float - the weighted average result def weighted_average(data, weights): if len(data) != len(weights): raise ValueError("data and weights must have the same length") return sum(d * w for d, w in zip(data, weights)) / sum(weights)

翻译后代码(注释变为中文):

# 计算输入数组的加权平均值 # 参数: # data - 数值列表 # weights - 权重系数列表 # 返回: # float - 加权平均值结果 def weighted_average(data, weights): if len(data) != len(weights): raise ValueError("data and weights must have the same length") return sum(d * w for d, w in zip(data, weights)) / sum(weights)

关键原则:代码注释翻译遵循"保留功能说明准确性"为第一优先级的策略。技术术语(如"weighted average")使用行业标准译名("加权平均值"),函数签名和类型标注保持原文不变,仅翻译注释中的描述性文本。错误消息字符串在UI场景下可以翻译,但在API场景下建议保留英文以保持与生态一致性。

2.2 多语言注释格式支持

语言 单行注释 多行注释 文档注释
JavaScript / TypeScript / Java / C# / C / C++ // /* */ /** */ (JSDoc)
Python # """ """ """ (docstring)
Ruby # =begin =end # (YARD)
Go // /* */ // (go doc)
Rust // /* */ ///、//! (rustdoc)
Shell / Bash / Python (script) # : ' ' (heredoc) # (无标准)

2.3 文档翻译格式保留策略

# My Project [![Build Status](https://img.shields.io/badge/build-passing-brightgreen)](https://example.com) ## Installation ```bash npm install my-project ``` ## Usage ```javascript import { translate } from 'my-project'; // Translate Chinese to English const result = await translate('你好,世界', { from: 'zh', to: 'en' }); console.log(result); // Hello, World ``` > **Note:** The API key is required for production use.

在翻译上述文档时,Skill会执行以下操作:

注意事项:翻译文档时需特别留意占位符变量(如${name}、%s、{0}等)和模板语法(如{{ variable }})。这些元素必须原封不动保留在译文中,否则会导致程序运行错误。翻译与国际化Skill应当自动检测并保护这些特殊语法结构。

三、i18n国际化文件生成

i18n国际化文件生成是翻译与国际化Skill的高级功能,专门用于处理前端框架、后端应用和库项目的多语言资源配置。Skill能够读取源代码中待翻译的文本内容,自动提取生成键值对结构,并为每种目标语言生成对应的翻译文件。

该功能支持主流的国际化格式和框架,包括但不限于:Vue I18n(JSON格式)、React Intl / FormatJS(JSON)、GNU gettext(PO/POT格式)、Ruby I18n(YAML格式)、Java ResourceBundle(Properties格式)、 iOS/macOS本地化(Strings格式)等。

3.1 JSON国际化文件生成

源语言文件(zh-CN.json):

{ "app.title": "项目管理工具", "app.description": "高效管理您的项目和团队任务", "nav.dashboard": "仪表盘", "nav.projects": "项目列表", "nav.settings": "系统设置", "common.save": "保存", "common.cancel": "取消", "common.delete": "删除", "common.confirm": "确认", "message.welcome": "欢迎回来,{username}!", "message.project_count": "您有 {count} 个项目正在进行中", "error.required": "此字段为必填项", "error.invalid_email": "请输入有效的邮箱地址" }

生成的英文翻译文件(en.json):

{ "app.title": "Project Management Tool", "app.description": "Efficiently manage your projects and team tasks", "nav.dashboard": "Dashboard", "nav.projects": "Projects", "nav.settings": "Settings", "common.save": "Save", "common.cancel": "Cancel", "common.delete": "Delete", "common.confirm": "Confirm", "message.welcome": "Welcome back, {username}!", "message.project_count": "You have {count} projects in progress", "error.required": "This field is required", "error.invalid_email": "Please enter a valid email address" }
复数形式处理:Skill支持不同语言的复数规则。中文中"{count} 个项目"既可表示单数也可表示复数;但英文需要区分单复数形式,自动生成 "You have {count} project" 和 "You have {count} projects" 两条翻译,或使用支持复数选择器的 ICU MessageFormat 语法:{count, plural, one {You have # project} other {You have # projects}}。

3.2 PO/POT 格式生成

GNU gettext 格式在 C/C++、PHP、Python 项目中广泛应用。Skill可以读取源码中的 gettext 调用并生成标准的 POT 模板文件和各语言的 PO 翻译文件。

#: src/controllers/user.php:42 #: src/views/profile.php:15 msgid "User registration successful" msgstr "用户注册成功" #: src/controllers/order.php:88 #, c-format msgid "Order total: %s" msgstr "订单总额:%s" #: src/views/welcome.php:5 msgid "Welcome, %s!" msgstr_plural "Welcome, %s!" msgstr[0] "欢迎,%s!" msgstr[1] "欢迎,%s们!"

3.3 YAML国际化文件生成

YAML格式在 Ruby on Rails、Python Django 以及部分静态站点生成器中广泛使用。

zh-CN: site: title: 我的博客 tagline: 分享技术与生活 posts: recent: 最新文章 popular: 热门推荐 comments: zero: 暂无评论 one: 共 1 条评论 other: 共 %{count} 条评论 footer: copyright: "© 2026 版权所有" contact: 联系我们
格式互转能力:Skill支持在JSON、YAML、PO三种格式之间进行互转。例如,当项目从 Vue I18n 迁移到 React Intl 时,只需指定源格式和目标格式,Skill即可自动完成配置文件的格式转换,无需手动重写整套国际化文件。

3.4 提取翻译键值的工作流程

Skill的自动化提取流程共分为五个步骤:

  1. 源码扫描:遍历项目目录,识别所有包含待翻译文本的文件(支持按扩展名过滤)。
  2. 文本提取:根据框架规则提取键值对。例如在 Vue 中识别 $t('key') 和 {{ $t('key') }},在 React 中识别 intl.formatMessage({ id: 'key' })。
  3. 去重合并:将同一键名在多个文件中出现的情况合并为一个条目,确保翻译量最小化。
  4. 批量翻译:对提取的所有键值进行批量翻译,利用术语表确保翻译一致性。
  5. 文件生成:根据目标语言数量,生成对应数量的国际化配置文件,保持键结构完整。

上下文感知翻译:Skill在翻译时会收集键名所在文件的路径、相邻代码、注释说明等上下文信息,传递给翻译引擎以获得更准确的翻译结果。例如,"run"在CI配置上下文中应译为"运行",而在运动类应用上下文中应译为"跑步"。上下文信息是消除这种歧义的关键。

四、翻译一致性管理

翻译一致性是国际化项目中最大的挑战之一。同一个术语在不同文件、不同页面甚至同一页面的不同位置出现时,必须使用完全相同的译名。翻译与国际化Skill通过内置的术语表管理和一致性检查机制,从根本上解决了这个问题。

一致性管理涵盖三个层面:术语级一致性(同一术语始终使用相同译名)、文件级一致性(同一键名在不同文件中翻译一致)、项目级一致性(整个项目遵循统一的翻译风格和规范)。

4.1 术语表管理

术语表是翻译一致性的基石。Skill支持在项目根目录创建术语表文件(terminology.json),定义核心术语的标准翻译。

{ "version": "1.0", "language_pair": { "source": "zh-CN", "target": "en-US" }, "terms": [ { "source": "用户", "target": "User", "category": "通用", "note": "系统用户,保持首字母大写", "status": "confirmed" }, { "source": "订单", "target": "Order", "category": "电商", "note": "特指购物订单", "status": "confirmed" }, { "source": "支付", "target": "Payment", "category": "金融", "alternative": ["Checkout", "Settlement"], "note": "支付流程中的统一术语", "status": "confirmed" }, { "source": "数据源", "target": "Data Source", "category": "技术", "note": "两个单词,中间有空格", "status": "confirmed" }, { "source": "部署", "target": "Deploy", "category": "DevOps", "alternative": ["Deployment"], "note": "动词时用Deploy,名词时用Deployment", "status": "confirmed" } ] }
术语表生命周期管理:术语表不是一次创建就固定不变的。翻译与国际化Skill支持术语表的版本控制和持续更新。当项目新增功能领域时,可以往术语表中添加新术语;当发现现有译名不符合行业惯例时,可以更新术语表并触发对历史翻译的重新审核。每次术语表变更都应记录变更日志,便于追溯。

4.2 一致性检查流程

Skill在执行翻译一致性检查时,会按照以下步骤自动完成质量审核:

检查项 说明 违规处理
术语一致性 检查译文中术语是否与术语表定义一致 自动替换为标准译名,标记原译文
跨文件一致性 同一键名在不同文件中的翻译是否一致 统一为出现次数最多的译法,报告冲突
占位符完整性 译文中是否保留了所有占位符变量 自动补全缺失占位符,标记为需人工审核
格式标记保留 HTML标签、Markdown标记是否完整 自动修复标记缺失,报告格式问题
情感色彩匹配 原文和译文的语气正式程度是否匹配 调整词汇选择,确保风格一致

4.3 偏差检测与修复

当Skill检测到翻译偏差时,会生成详细的差异报告,帮助开发者快速定位问题。

翻译一致性检查报告 ====================== 项目:my-i18n-app 检查时间:2026-05-08 09:31:38 源语言:zh-CN 目标语言:en-US [警告] 术语不一致 (3处) - "用户" → 当前译为"Customer",术语表要求"User" 文件:src/locales/en-US/user-profile.json:12 文件:src/locales/en-US/order-history.json:35 - "数据源" → 当前译为"Datasource",术语表要求"Data Source" 文件:src/locales/en-US/admin-settings.json:78 [错误] 占位符缺失 (1处) - 键名:message.welcome 原文:欢迎回来,{username}! 当前译文:Welcome back! 问题:缺少 {username} 占位符 建议修复:Welcome back, {username}! [注意] 跨文件不一致 (2处) - "common.save" - 文件 A: "Save" - 文件 B: "Store" - 建议统一为:"Save" 检查结论:通过 245 / 251 项,6项需处理 建议:自动修复 4 项,2 项需人工审核

最佳实践:建议在项目的CI/CD流水线中加入翻译一致性检查步骤。每次构建时自动运行一致性检查,如果发现严重问题(如占位符缺失、术语冲突)则构建失败,强制开发者在合并代码前修复。这种方式可以将翻译质量问题拦截在开发阶段,避免有问题的翻译部署到生产环境。

4.4 语境感知与翻译风格调整

翻译一致性不仅仅是术语层面的统一,还包括翻译风格的协调。Skill支持根据文档类型和使用场景自动调整翻译的正式程度:

风格冲突处理:当同一术语在不同文档类型中需要不同处理时(例如,"delete"在UI按钮上译为"删除",在日志文本中译为"已删除"),术语表可以定义多语境翻译条目,Skill根据检测到的文档类型自动选择最合适的翻译版本,而不是强制全项目统一。

4.5 批量更新与历史翻译重译

当术语表发生变更时,Skill支持对项目中的历史翻译进行批量重译。具体流程为:

  1. 检测到术语表中有术语的翻译发生了变更
  2. 扫描项目所有国际化文件,定位包含旧译名的条目
  3. 将这些条目标记为"待更新",生成变更差异清单
  4. 按照变更清单逐一替换旧译名为新译名
  5. 生成翻译更新报告,列出所有修改的文件和条目数量

这一机制确保了在整个项目的生命周期中,翻译的一致性不会因为术语表的进化而遭到破坏。开发者可以放心地优化术语表,而无需担心产生碎片化的不一致翻译。