翻译校对
ai-i18n 在 Vite 开发服务器业务页面内提供翻译校对插件。你可以比较原文、自动译文与人工译文,并直接修正 不合适的措辞。保存后,业务页面会使用新的译文。
先在 Vite 配置中显式注册 Review 插件:
aiI18n() 本身不会开启 Review。aiI18nReview() 必须与一个 aiI18n() 注册在同一份 Vite 配置中,
且只能注册一次。不注册时,开发服务器页面没有校对入口。
页面图标和控制台提示可以分别关闭:
launcher: false 隐藏页面入口;printUrl: false 隐藏控制台提示。两者都不会关闭独立校对页。
完全不需要开发校对时,请从 Vite plugins 中移除 aiI18nReview()。
打开页面内校对
- 运行
vite dev。 - 打开需要检查的业务页面。
- 点击页面右下角的翻译校对图标,选择目标语言并开始检查。
工作台会贴在业务页面底边,让你在校对时继续查看页面上下文。拖动面板上边缘可以调整高度。 高度只保存在当前浏览器中,不会写入项目配置或翻译文件。
工作台打开后默认显示当前业务页面中实际出现的文案,也可在顶部切换到 全部页面。 它会匹配原文、自动译文和人工译文。带动态值的文案也会按模板占位符匹配。 SPA 路由或页面变化后,列表会自动更新。
当前页面模式使用开发服务器已处理的文案。切换到“全部页面”或打开独立校对页时,会从应用入口补齐 可达页面的文案清单,包括尚未访问的懒加载页面。这不需要先运行完整构建。
已有清单仍有效时复用提取结果。只修改译文会更新翻译状态,不重新提取源码。 保存页面源码后,新增、修改、删除的文案及源码位置会自动同步。未访问页面也一样。 扫描期间显示刷新状态。源码暂时无法解析时保留上次结果,并提示可能过期;修复后自动重试。 保存校对时会复验文案与位置,避免把旧选择应用到已经变更的调用。未保存输入不会被后台刷新覆盖。
完整范围仍是应用入口可静态到达的模块。它不包含未引用文件、运行时才能确定的路由或仅构建生成的页面。
生产接入验证仍需要完整构建。若要先审查孤立译文,请在构建前设置 cleanup.orphanMessages: false;默认构建会直接清理它们。
打开独立校对页
Vite 开发服务器启动后,控制台会打印完整的 Review 地址。也可以直接打开当前开发服务器下的
/__ai-i18n/。独立页默认直接进入全部已提取文案,并与页面内工作台使用同一份译文。
独立页会显示校对进度、目标语言、筛选和编辑区,适合连续检查完整清单。
独立页没有业务页面上下文,因此不显示 当前页面,也不提供页面取词和滚动定位。 需要按真实页面筛选文案或从元素定位源码时,使用页面内入口。需要集中检查整个提取结果时,使用独立页。
从页面取词
在嵌入工作台顶部选择“页面取词”,面板会暂时收起。移动到目标元素时会出现带角点的定位框。 点击后,工作台会在页面底部重新打开并定位对应消息。
定位框会短暂保留,让你确认刚才选中了页面中的哪个区域,随后自动消失。
如果相同渲染值对应多个 comment、文件或调用位置,工作台会列出候选。选择正确的候选后,才能修改
当前位置的人工译文。它不会默认选择第一项。
按 Escape 可以退出取词。页面取词只拦截这一次选择点击,不会长期劫持业务事件。
查看和筛选文案
顶部选项卡为 当前页面、全部页面 与 设置(默认 当前页面):
- 当前页面:只展示当前业务页面中出现的全部文案,不含搜索与状态筛选。
- 全部页面:可搜索原文、译文、语境或文件,也可按确认状态和文件类型筛选。
- 设置:在深色、浅色和跟随系统之间切换外观;也可以选择跟随浏览器、中文或 English 的界面语言。 两类偏好均保存在当前浏览器中,不会写入项目配置。
只有一个目标语言时,工作台直接使用该语言,不再显示语言选择控件。
“待确认 / 已确认”表示当前语言是否已有人工译文,与自动译文是否缺失无关。同一消息只要有一个
范围的人工译文就会标为“已确认”,不代表所有出现位置都已覆盖。自动译文为 null 表示尚无自动
译文。如果当前位置有有效人工译文,业务页面仍会使用它。两者都没有时才回退原文。
页面会在当前浏览器会话中按文案、目标语言和作用范围保留未保存输入。切换筛选、搜索、语言或作用 范围后再返回,仍可继续原来的编辑。刷新或关闭校对页面前,仍应保存需要保留的修改。
点击属于当前页面的文案时,业务页面会滚动并短暂标记对应元素。需要区分同一文案的多个调用位置时, 使用页面取词。
静态 comment 用于区分文字相同但含义不同的文案。例如,按钮中的“保存”和状态中的“保存”可以
分别设置语境:
每条文案都会显示源码位置;点击编辑器图标可以直接跳到该位置。同一文案包含多个调用位置时,先使用页面取词确认要修改的位置。
选择生效范围
在人工译文输入框上方,通过横向排列的作用范围选项卡选择生效范围:
- 当前位置:只对当前选中的一次调用生效;
- 当前文件:只对当前选中位置所在的来源文件生效;
- 所有文件:对
source和comment相同的全部文案生效。
同一句原文在整个应用中含义一致时,选择所有文件。只有一个文件需要不同译法时选择当前文件。同一 文件内只有某次调用需要不同译法时选择当前位置。源码移动后旧位置不会自动套用到相似文案,需要重新确认。
确认、修改和继续下一条
没有当前作用范围的人工译文时,输入框会保持空白。自动译文只在上方展示,可按需选择“使用自动 译文”填入。只有输入非空且模板占位符校验通过时,确认按钮才可用。
主按钮根据当前状态说明将要发生的操作:
- 确认译文:输入新的人工译文后保存;
- 保存修改:输入与当前值不同;
- 已保存:当前人工译文没有变化,不会重复提交。
主按钮右侧的“继续 →”会在保存成功后切换到下一条可见文案,并更新业务页面。
保存、修改或撤销“当前位置”的人工译文同样会立即更新业务页面。它不需要手动刷新。 刷新或新开业务页面也会读取最新译文,开启语言按需加载时同样适用。
校对页支持以下快捷键:
- Command/Ctrl + Enter:保存当前人工译文;
- Command/Ctrl + Shift + Enter:保存并继续下一条;
- Alt + A:填入当前自动译文;
- 焦点不在搜索框或人工译文输入框时,按上下方向键切换文案。长列表会自动滚动,保持选中项可见。
需要恢复自动译文时,选择原来的作用范围,再选择“撤销人工译文”。这项操作只删除当前语言、 当前文案和当前范围对应的人工译文,不会删除翻译记忆中的自动译文。
人工译文必须保留原文中的模板占位符。例如,原文包含 {name} 时,译文也必须包含 {name}。
页面会拒绝保存缺少模板占位符的译文。
与自动翻译的关系
翻译校对不会修改自动译文。人工译文优先于自动译文,且范围越具体优先级越高。自动译文仍不可用时, 页面回退显示原文。
少量关键措辞适合使用校对页面。批量补译与自动化操作更适合使用 AI 翻译或 Agent + MCP。
使用边界
Review 只在显式注册 aiI18nReview() 后开启,且只在 Vite 开发服务器中可用。
它不会进入构建、Preview 或生产产物。它不需要账号,也不需要额外的 UI 依赖,更不会覆盖业务页面样式。
不需要开发服务器校对时,从 Vite plugins 中移除 aiI18nReview()。
完整补译流程、人工译文格式和提交规则见补齐和确认译文。
复用历史候选
启用 SQLite 翻译记忆 后,校对编辑区提供“历史候选”。 选择文案和目标语言后按需加载,显示译文、来源项目及人工校对的原文件/位置;同值合并,更多结果可继续加载。 “当前生效”标记包含当前范围继承的人工译文。候选顺序不代表质量,也不会默认预选。
点击“使用此译文”只填入草稿;检查语境、占位符和作用范围,再点击确认或保存。
结果按当前范围写入项目 overrides/,不继承来源项目范围,也不覆盖自动译文。
缓存不可用可重试,正常编辑和保存不受影响。未启用缓存时不显示此区域。