Skip to content

feat: 新增翻译前文本预处理与正则替换功能 - #814

Open
Fiveo9 wants to merge 16 commits into
STranslate:mainfrom
Fiveo9:feature/text-preprocessing
Open

Fiveo9 wants to merge 16 commits into
STranslate:mainfrom
Fiveo9:feature/text-preprocessing

Conversation

@Fiveo9

@Fiveo9 Fiveo9 commented Oct 3, 2026 •

Copy link
Copy Markdown

概述

新增翻译前文本预处理(正则替换)功能。
允许用户在文本发送给翻译服务商之前,通过自定义的正则表达式和替换规则对原文进行清洗或转换(如敏感信息过滤、专用术语代换、特定格式符号剔除等)。


主要特性

1. 规则管理与草稿编辑

  • 多规则链式执行:按列表从上到下依次处理,上一条规则的输出作为下一条规则的输入。
  • 灵活的正则配置:支持标准 .NET 正则语法(含 $1、${name} 等捕获组引用),支持忽略大小写、多行模式、单行模式。
  • 草稿编辑机制:编辑操作在独立草稿中进行,点击保存时才校验并生效,取消编辑不污染当前运行中配置。

2. 实时预览与沙盒测试

  • 提供独立的规则测试与预览界面,无需发起真实网络请求即可实时预览最终发送给翻译引擎的文本。
  • 显示各规则命中次数、耗时统计以及正则语法错误提示。

3. 全链路覆盖

  • 主翻译入口:键盘输入、剪贴板监听、取词翻译等;输入框继续保留原始文本,发送请求使用预处理后的独立副本。
  • 单服务/词典查询:单服务重试、提示词切换及词典查询均统一接入预处理逻辑。
  • 划词/替换翻译:支持外部划词替换翻译链路。
  • 图片翻译 (OCR):支持对 OCR 识别出的文本块按块进行正则预处理。

4. 稳定性与安全性保障

  • ReDoS 防护:内置单条与全局正则超时保护机制,避免复杂正则导致界面或后台任务卡死。
  • 防文本膨胀:限制替换后的文本增长上限,防止异常替换导致内存溢出。
  • 空结果防护:若预处理后文本为空,自动拦截后续无意义的翻译与语言检测请求。
  • 缓存与历史一致性:引入规则指纹(Rules Fingerprint),规则变动后自动隔离旧缓存,避免脏缓存问题。

5. Fluent 2 现代 UI

  • 采用与应用风格一致的 Fluent 2 设计风格,提供更加整洁舒适的交互体验。

测试与验证

  • 单元测试:新增 TextPreprocessing 系列单元测试,37 项测试用例全部通过。
    • 覆盖单规则/多规则执行、捕获组替换、正则超时、超大文本保护、边界空字符串、配置序列化与反序列化等场景。
  • 工程构建:所有项目在 .NET 10 下编译通过(0 警告,0 错误)。
  • 全流程手动验证:
    • 主界面翻译与单服务重试
    • 划词与替换翻译流程
    • 图片翻译 OCR 文本块替换
    • 规则增删改查及沙盒预览

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant