Skip to content

[FEATURE] 增加"包含中文字符即判定为中文段落"的快速检测规则,跳过翻译 #2055

Description

@lunula8

Before you begin

  • I have searched existing issues to avoid duplicates
  • I am willing to contribute a PR for this feature

Is your feature request related to a problem? Please describe.

背景

目前判断段落是否为目标语言、从而跳过翻译的逻辑位于 shouldSkipAsTargetLanguage,其内部会调用语言检测(如 detectLanguage)来判断段落语言 translation-modes.ts:837-839 。测试用例中也能看到当前是通过 detectLanguage 结合 Unicode 汉字区间正则(/[一-鿿]/)等方式模拟判断中文 target-language-skip.test.ts:82-99 。

在 translateTextForPage 的现有实现和测试里,目标语言预检测(enableTargetLanguageSkip)会调用 detectLanguage(text, { enableLLM: false }),并依赖长度阈值 MIN_LENGTH_FOR_SKIP_LLM_DETECTION 判断是否触发检测 translate-text.test.tsx:177-217 。

但存在一个问题:某些段落存在中英文夹杂的情况下,会被识别为英文,然后再翻译一遍,但实际上也并没有翻译成功,反而导致了整体的浏览效率极低。如下图所示:
即使已经设定了“小段落过滤”(最小字符数:20;最小词数:5)也无法避免,且容易误伤。

Image

Describe the solution you'd like

需求描述

希望增加一个更简单、更"宽松"的中文判定规则:只要段落文本中包含至少一个中文字符(CJK Unicode 区间),就直接判定该段落为中文,从而跳过翻译,而不需要依赖现有基于统计/语言模型的 detectLanguage 判断逻辑(该逻辑可能因段落中夹杂英文、数字、专有名词而误判为非中文,导致中文段落被错误地送去翻译)。

期望行为

在 shouldSkipAsTargetLanguage(或其上游调用方 translateTextForPage / translateNodes 中的预检测环节)新增一种快速路径的选项(可以开启关闭):当目标语言为中文(targetCode 为 zh 系列)时,先用正则(类似 /[一-鿿]/ 或更完整的 CJK Unicode 区间)检测文本,只要命中一个中文字符即视为"已是目标语言",跳过后续的 detectLanguage 调用和翻译请求。
该规则应与现有 enableTargetLanguageSkip 开关、skipLanguages 配置项协同工作,不应破坏非中文目标语言场景下的原有检测逻辑。
需要覆盖的场景:
纯中文段落 → 跳过翻译(现有逻辑已支持)。
中英文混排段落(如中文夹杂专有名词/代码/数字)→ 新规则下应判定为中文并跳过,而非当前可能被误判为英文进而发起翻译请求。
中文标点或全角符号是否算作"中文字符"需要明确边界。

Which area(s) would this feature affect? (Select all that apply)

Browser Extension

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions