docs/TRANSLATION_IMPLEMENTATION.md
本文档对 CopyTranslator 的翻译实现进行端到端分析,覆盖主进程与渲染进程的数据流、动作与配置驱动方式、翻译与词典执行机制、多引擎缓存与对比、界面数据绑定、以及本地化资源生成与加载。目标是帮助后续开发者准确定位关键入口与修改点。
进程与控制器
TranslateController 并安装本地化模块:controller.ts状态与事件通道
observePlugin 通知观察者(主进程控制器与翻译控制器):observe.tsupdateViewPlugin 触发,常见用于语言下拉菜单刷新:update-view.ts动作分发
ActionManager 构造菜单/动作并通过事件总线分发:action.tsController.handle 负责路由动作,翻译相关操作转交给 TranslateController.handle:controller.ts、translate-controller.ts配置与开关
configuration.ts 定义,包括翻译开关与引擎组设置:configuration.tsTranslateController.postSet 触发实际行为切换:translate-controller.ts触发来源
translate、translateClipboard、doubleCopyTranslate 等:translate-controller.tsBaseView.translate 发送动作:BaseView.vue、ContrastPanel.vue文本预处理
normalizeText 负责净化文本与单词判定前处理:translate-controller.tssetSrc 中实现,针对中文与非中文拼接规则不同:translate-controller.tscheckLength、checkValid、matchAnyResults 中控制:translate-controller.ts语言检测与智能互译
decideLanguage 结合用户配置、翻译器检测与繁简识别决定源/目标语言:translate-controller.tssmartTranslate 当源/目标相同会尝试切换目标语言:translate-controller.ts语言名称显示
getLanguageLocales,由 @opentranslate2/languages 的本地化字典提供:locale.ts翻译器注册
translatorMap,用于统一实例化与配置更新:translators.tstranslatorTypes 与引擎组定义在类型模块中:types.ts多引擎与后备策略
Compound.translate 根据支持语言过滤引擎,主引擎不支持则用 fallbackTranslator:compound.tsResultBufferManager 管理并同步到 Vuex:compound.ts引擎组与多源模式
translator-enabled、translator-cache、translator-compare 等配置控制:types.tsTranslateController.translateSentence 按当前模式选择引擎组:translate-controller.ts词典引擎聚合
Polymer 维护主词典引擎并并行查询其他引擎:polymer.tsdictionary/types.ts:types.tsengines.ts 注册:engines.ts智能词典触发
isWord 判断是否进入词典模式,受 smartDict 与增量复制影响:translate-controller.tsqueryDictionary 完成:translate-controller.ts结果同步
dictResult:translate-controller.tsresultBuffer:compound.ts渲染层展示
BaseView 统一读取 sharedResult/dictResult/配置并定义模式切换逻辑:BaseView.vueDiffTextArea 读取 resultBuffer 并计算差异:DiffTextArea.vueDictResult 渲染:DictResult.vueFocus 中处理译文与多源/词典展示:Focus.vue资源定义与生成
locales.ts 中维护为 Map:locales.tslocales.ts 的 <tip> 与提示类键,并由 Tips.vue 组装prebuild.ts 将语言包生成 dist_locales,并补齐缺失键:prebuild.tsprebuild 中执行:tsc + node:package.json运行时加载
L10N 在主进程加载系统与用户目录语言包并安装到 Vuex:l10n.tsdist_locales,生产态 resources/locales,并包含用户目录:env.tsl10n 模块保存当前语言与语言列表:l10n.ts新增翻译器
translatorMap 中注册实例:translators.tstranslatorProviders 配置扩展,使用 CustomTranslatorManager 自动展开模型:custom-translators.ts修改翻译触发机制
TranslateController.handle:translate-controller.tssetWatch 与 checkClipboard:translate-controller.ts调整多引擎策略
action.ts 与 types.ts:action.ts、types.tsswitchTranslator:translate-controller.ts