Back to Copytranslator

翻译实现机制完整分析

docs/TRANSLATION_IMPLEMENTATION.md

12.1.08.5 KB
Original Source

翻译实现机制完整分析

本文档对 CopyTranslator 的翻译实现进行端到端分析,覆盖主进程与渲染进程的数据流、动作与配置驱动方式、翻译与词典执行机制、多引擎缓存与对比、界面数据绑定、以及本地化资源生成与加载。目标是帮助后续开发者准确定位关键入口与修改点。

1. 架构分层与数据流

进程与控制器

  • 主进程负责翻译、剪贴板、OCR 与配置响应:初始化 TranslateController 并安装本地化模块:controller.ts
  • 渲染进程负责界面渲染与交互:通过代理将设置写回主进程:controller.ts

状态与事件通道

  • 全局状态保存在 Vuex:翻译结果、词典结果、语言列表、结果缓冲区与配置:store/index.ts
  • 配置变更通过 observePlugin 通知观察者(主进程控制器与翻译控制器):observe.ts
  • 视图层的联动更新由 updateViewPlugin 触发,常见用于语言下拉菜单刷新:update-view.ts

2. 动作与配置驱动链路

动作分发

  • 动作从 UI 或快捷键触发,经 ActionManager 构造菜单/动作并通过事件总线分发:action.ts
  • 主进程 Controller.handle 负责路由动作,翻译相关操作转交给 TranslateController.handlecontroller.tstranslate-controller.ts

配置与开关

  • 配置项规则由 configuration.ts 定义,包括翻译开关与引擎组设置:configuration.ts
  • 翻译相关配置变更最终由 TranslateController.postSet 触发实际行为切换:translate-controller.ts

3. 翻译触发与输入处理

触发来源

文本预处理

4. 语言决策与语言名称

语言检测与智能互译

语言名称显示

  • 语言名称来自 getLanguageLocales,由 @opentranslate2/languages 的本地化字典提供:locale.ts
  • 翻译完成后 toast 显示语言名:translate-controller.ts

5. 翻译执行与引擎调度

翻译器注册

  • 内置翻译器集中注册在 translatorMap,用于统一实例化与配置更新:translators.ts
  • translatorTypes 与引擎组定义在类型模块中:types.ts

多引擎与后备策略

  • Compound.translate 根据支持语言过滤引擎,主引擎不支持则用 fallbackTranslatorcompound.ts
  • 结果缓存由 ResultBufferManager 管理并同步到 Vuex:compound.ts

引擎组与多源模式

  • 翻译器组由 translator-enabledtranslator-cachetranslator-compare 等配置控制:types.ts
  • TranslateController.translateSentence 按当前模式选择引擎组:translate-controller.ts

6. 词典系统与智能词典

词典引擎聚合

  • Polymer 维护主词典引擎并并行查询其他引擎:polymer.ts
  • 词典类型与结果结构定义于 dictionary/types.tstypes.ts
  • 当前内置词典引擎由 engines.ts 注册:engines.ts

智能词典触发

7. 结果同步、缓存与界面绑定

结果同步

渲染层展示

  • BaseView 统一读取 sharedResult/dictResult/配置并定义模式切换逻辑:BaseView.vue
  • 对照面板使用多布局展示源文本、译文、词典与对比视图:ContrastPanel.vue
  • 多源对比界面使用 DiffTextArea 读取 resultBuffer 并计算差异:DiffTextArea.vue
  • 词典界面由 DictResult 渲染:DictResult.vue
  • 专注模式视图在 Focus 中处理译文与多源/词典展示:Focus.vue

8. 本地化资源生成与加载

资源定义与生成

  • 源码语言包在 locales.ts 中维护为 Maplocales.ts
  • 使用技巧轮播内容来自 locales.ts<tip> 与提示类键,并由 Tips.vue 组装
  • prebuild.ts 将语言包生成 dist_locales,并补齐缺失键:prebuild.ts
  • 构建脚本在 prebuild 中执行:tsc + nodepackage.json

运行时加载

  • L10N 在主进程加载系统与用户目录语言包并安装到 Vuex:l10n.ts
  • 语言包目录由运行环境决定:开发态 dist_locales,生产态 resources/locales,并包含用户目录:env.ts
  • Vuex 的 l10n 模块保存当前语言与语言列表:l10n.ts

9. 扩展与修改建议

新增翻译器

  • 内置翻译器:在 translatorMap 中注册实例:translators.ts
  • AI 供应商:通过 translatorProviders 配置扩展,使用 CustomTranslatorManager 自动展开模型:custom-translators.ts

修改翻译触发机制

调整多引擎策略

10. 关键文件索引