Skip to content
tanyaqiongcodePublic

About

轻量网页版翻译记忆 CAT 工具:TM + 术语库 + 模糊匹配 + 审校留痕。零依赖纯前端,翻译数据本地存储;联网查阅仅发送查询关键词 / Lightweight browser CAT tool, zero dependencies, local-first

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Mini-CAT · 轻量翻译记忆工作台

Lightweight browser-based CAT tool — translation memory + termbase + fuzzy matching, zero dependencies, data never leaves your machine.

一个给自己用的"迷你 Trados / memoQ":导入已有的试译内容与术语表,建立翻译记忆库;新翻译的内容自动匹配记忆库与术语库。专为 10 万字以内的个人翻译项目设计(当前项目约 3.5 万字,个人部分约 1.2 万字)。

Mini-CAT 界面

🔗 在线使用(零后端,数据不出浏览器):https://tanyaqiongcode.github.io/mini-cat/

为什么不用现成工具

Trados / memoQ MateCat / Weblate Mini-CAT
安装 重型桌面软件 需自建服务器(PHP/MySQL、Django) 双击网页即用
数据 本地/云 上传到服务器 全在本机浏览器(IndexedDB)
适用规模 大型项目 持续本地化 ≤10 万字个人项目
费用 商业授权 开源但运维成本 零依赖、零成本

对未出版书稿的翻译来说,"内容不出本机"是硬需求——Mini-CAT 没有任何后端,全部逻辑与数据都在浏览器里;只有可选的"联网查阅"(发送查询关键词)和端侧 MT(浏览器可能下载语言模型,文本不上传)会产生网络请求,不使用这两项时不发出任何网络请求。

功能

  • 记忆库(TM):导入 TMX 1.4 / docx 对照表 / xlsx 双语表 / CSV / TSV / JSONL / 双栏粘贴(自动段落对齐);导出 TMX / CSV / JSONL,可回流 Trados、memoQ 或语料库仓库
  • ICE 101% 上下文匹配:前一句也精确命中时升级为 101% 并优先自动填入(memoQ/Trados 惯例)
  • 端侧 MT 建议(实验):Chrome 138+ 内置翻译 API,模型在本机运行、文本不上传;不支持的浏览器自动隐藏按钮
  • 术语库(TB):导入 xlsx / TBX-Basic / CSV / TSV(自动识别"中文术语/最终译法"等列);译文写作时在原文中高亮命中术语,悬停显示译法与定义;导出 TBX / CSV
  • Word 文档直接导入:单语 docx(如翻译底本)自动提取段落切分;双语 docx 支持左右对照表格、段落交替、先中后英三种结构(自动检测 + 手动指定)
  • 审校留痕(多人协作,多轮修订):修订历史(V1→V2→V2.1→V3…含作者与日期)、导入修订(审校人用 Word 修订模式改稿后回传,工具自动识别修订人与日期——来自 w:ins/w:del 署名,兜底读文件属性;导师/专家的 Word 批注自动导入批注模块);导出 Word 原生修订模式 + Word 批注 + 修订对照表(xlsx/csv)——审校过程完整可追溯
  • 联网术语查阅:侧栏输入关键词,自动聚合中文/英文/日文维基百科(带精确/相关性分级)、大都会艺术博物馆藏名(馆方高亮优先)、Internet Archive 书目;一键直达 Google(全部/图片/Books/Scholar)、术语在线(全国科技名词委)、故宫数字文物库、近代文献人名辞典等权威库。任何候选译名都须经人工点击"设为英文译法"才写入术语库(自动标注来源与日期)——依据国社科申报要求,工具不自动生成译文
  • 自动匹配:新原文按句切分后自动匹配——100% 精确匹配直接填入译文,模糊匹配(95–99 / 75–94 / 50–74%)在候选面板中一键采用
  • 语料检索(Concordance):在全部记忆库中按关键词检索中英对照用例
  • 译后自动入库:段落确认后自动写入记忆库(memoQ 式自动学习),重复句对自动去重
  • 交付导出(范围可选):纯译文(按原文段落自动重建,docx/txt)、中英对照·段落式(docx,中文段+斜体英文段)、句句对照表格(docx/xlsx/csv,「序号|中文|英文」三列,与项目交付件同款)——另附双语 HTML 对照表
  • 项目统计:段落进度、中英字/词数、匹配率分布(101/100/95-99/模糊/无)——写翻译实践报告时的过程数据直接可用
  • 多项目:按项目隔离记忆库与术语库;JSON 全量备份/恢复,拖拽 .json 到页面即可恢复,超过 7 天未备份自动提醒

快速开始

方式一(最简单):下载本仓库,双击 index.html。

方式二(GitHub Pages,推荐):直接访问 https://tanyaqiongcode.github.io/mini-cat/——本仓库已开启 Pages,点开即用。fork 后请在 Settings → Pages 选 main 分支根目录自行开启。

方式三(本地服务器):

python3 -m http.server 8765
# 打开 http://127.0.0.1:8765

第一次使用:① 导入记忆库(可直接用 sample/sample_tm.tmx 体验)→ ② 导入术语库(sample/sample_termbase.csv)→ ③ 导入原文(粘贴中文即可)→ 开始翻译。确认段落时译文自动入库。

与 porcelain-china-corpus 无缝衔接

本工具按该语料库仓库的文件格式设计:corpus/parallel/porcelain_zh_en.tmx|csv|jsonl 直接导入记忆库,termbase/porcelain_termbase.csv|tbx 直接导入术语库(自动取"2026最终译法",空缺回退"2025英文译法");导出的 TMX/JSONL/TBX 可直接回流仓库。

匹配算法

借鉴 OmegaT(编辑距离相似度)与 MateCat(匹配分级)的通行做法:

  1. 归一化:全半角统一、空白折叠、大小写归一;中文再去空格
  2. 候选海选:字符 bigram 倒排索引,按共享比例取前 120 条(避免全库两两比对)
  3. 粗筛:长度比 < 0.34 或 bigram Dice 系数 < 0.18 直接排除
  4. 精算:有界 Levenshtein 归一化编辑距离(提前放弃),标点差异轻罚
  5. 分级:100%(精确)/ 95–99 / 75–94 / 50–74(模糊)/ 无

实测规模:4,000 条记忆 × 400 段新原文 ≈ 2 秒(见 tests/bench.js)。ICE(101%)判定:记忆条目记录前一句语境(prevNorm),新段落的前文与其一致时,精确匹配升级为 101% 并优先自动填入。

隐私与备份边界

  • 无后端、无账号、无埋点;翻译数据(记忆库/术语库/句段/批注/修订历史)仅存于本机浏览器 IndexedDB
  • "联网查阅"功能会向维基百科(zh/en/ja)、Met Museum、Internet Archive 发送查询关键词,不发送句段、译文或记忆库内容;端侧 MT 由浏览器在本机翻译,首次使用时浏览器可能联网下载语言模型(不上传文本);其余功能无网络请求
  • 清除浏览器数据会删除记忆库——定期用「备份」导出 JSON(工具在超过 7 天未备份时会提醒)
  • 备份 JSON 含全部翻译记忆与术语,请视为敏感数据妥善保管;恢复时与现有数据合并去重,外来记录 ID 一律丢弃、结构经消毒校验(防跨库覆盖与注入)
  • 换电脑/换浏览器:备份 JSON 拖拽进页面即完成迁移

句对拆分与合并(v1.8)

句段上方的「拆分句对」可把一条中英句对拆成两条:分别在原文、译文的只读文本框内点击拆分位置,核对两条预览后确认。原文两侧都须有内容;译文可以在开头或末尾拆分,把完整译文暂留在其中一侧,另一侧待补译。不会按字符比例猜测双语边界。

「与下一句合并」合并工作区中实际相邻的两条句对(不是筛选后显示的下一条),提交前可核对预览。默认保留已有空白,同段中文直接相接、英文用空格连接,跨段落保留换行;也可选择直接相接。由同一次拆分产生的相邻两半重新合并时,默认精确保留原字符串。

两种操作都保留译文局部格式并自动保存,调整后的句对需要重新确认。旧修订与批注保存在「调整前记录」,不会错误归属于新的句对;JSON 备份也保留这些记录。调整不删除或改写记忆库里的旧条目,需另行审查过时的记忆。历史档案每条句对最多 100 份,超限时阻止操作而不是截断。

顶部「撤销句对调整」保留本次会话最近 20 次调整。刷新或切换项目后撤销栈清空;调整后若已有其他编辑,会阻止覆盖式撤销以保护新内容。正式处理前仍建议导出备份。普通交付与修订导出使用当前句对;完整调整前档案仅在页面查看和 JSON 备份中保留。

开发

在线格式与候选术语(v1.7)

在译文中选中文字,用句段上方工具栏设置加粗、斜体、下划线、上标、下标或清除格式。快捷键为 Ctrl/Cmd+B、I、U;Ctrl/Cmd+Z 撤销,Ctrl/Cmd+Shift+Z 重做。格式自动保存,备份 JSON 保留格式;既有纯文本项目无需迁移。外部粘贴按纯文本处理,避免导入不可信 HTML。

纯译文 DOCX、中英对照 DOCX、句句对照 DOCX 和 HTML 交付件保留格式。TXT、CSV、XLSX 和翻译记忆数据仍使用纯文本。带格式的修订痕迹以整段删除/插入保留前后版本的格式,不将格式修改伪装成逐词文字差异。

打开侧栏「术语库」→「扫描句段,提取候选术语」。工具在本机扫描当前项目全部已有译文的中英句段(至少 3 对),使用 n-gram、C-value/PMI 和共现投票产生候选,最多展示排名前 300 条、每页 50 条。未译句段跳过,已有术语排除。统计译名可能错误,必须结合例句修改并逐条勾选后才入库;不会自动确认任何候选。确定后的术语随原有 CSV/TBX 导出,也随项目备份保存。可导出 candidates.json 与 decisions.json 留存复核记录。

提取器无需 API 密钥、不上传语料、无付费服务。小语料或单次出现的词可能没有统计译名,不会编造;对于错误候选取消勾选即可。扫描在独立 Worker 中进行,超时 60 秒终止;单句超过 2 万字符、总计超过 200 万字符时要求拆分,避免卡住编辑器。

统计引擎复用 bilingual-term-extract(MIT,版权声明包含在 js/term-engine.js)。需要更新引擎时运行 node scripts/bundle-term-engine.cjs <该工具源码目录>;用户复核替代自动 LLM 精筛。格式数据只保存允许的文本标记,不保存任意 HTML。

运行时零依赖、无构建步骤;开发测试使用 Node.js 20+、linkedom 与 Playwright:

npm ci
npm test                   # 所有单元测试与规模基准
npx playwright install chromium
npm run test:browser       # 隔离浏览器与 IndexedDB,不读取个人浏览器资料

架构与设计取舍见 docs/architecture.md。

修订导入时,相同原文按文件内出现顺序对应工作区内出现顺序。请保持同文段落的顺序,且包含该原文的全部重复段落;数量不一致会拒绝导入,不能可靠判断的局部修订不会自动覆盖首段。Word 批注跟随所在行匹配。

已知限制(v1.1)

  • .xls(旧二进制格式)不支持,请另存为 .xlsx;旧版浏览器(无 DecompressionStream)读取 docx/xlsx 需 Chrome/Edge 80+、Safari 16.4+
  • 端侧 MT 建议仅在 Chrome 138+ 且本机有 zh→en 语言包时可用,其他浏览器自动隐藏(不影响其余功能)
  • 数据存于浏览器 IndexedDB:换电脑或换浏览器用「备份」导出 JSON,在新机器拖拽进页面即完成迁移

MIT License.

About

轻量网页版翻译记忆 CAT 工具:TM + 术语库 + 模糊匹配 + 审校留痕。零依赖纯前端,翻译数据本地存储;联网查阅仅发送查询关键词 / Lightweight browser CAT tool, zero dependencies, local-first

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages