Skip to content

fix(patch): 渲染层增加工作区内容禁区,代码与文件名不再被汉化 - #3

Merged
ggbdpq merged 3 commits into
mainfrom
fix/issue#2-no-translate-workspace-content
Sep 4, 2026
Merged

fix(patch): 渲染层增加工作区内容禁区,代码与文件名不再被汉化#3
ggbdpq merged 3 commits into
mainfrom
fix/issue#2-no-translate-workspace-content

Conversation

@ggbdpq

@ggbdpq ggbdpq commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Summary

修复 #2:词典里的单词级 exact 词条(cloud/text/a 等)撞上了编辑器代码 token 与文件名——Monaco 把每行代码按 token 切成独立文本节点,text文本<a /><一个 />、Java 包 cloud云端 都是这么来的。删词条治不了这一类问题(cloud云端 本身是正当的界面词条),所以在渲染层注入脚本的文本节点过滤器(所有文本翻译的必经之路)加了一层「工作区内容禁区」:命中 .view-lines(编辑器/diff/聊天代码块/Notebook)、.explorer-folders-view(文件树)、.search-view .results(搜索结果)、.xterm-rows(终端)、.monaco-breadcrumbs(面包屑)的文本一律不翻译;输入框 placeholder/title/aria-label 的属性翻译路径不受影响。

已知边界(暂不处理):标签页标题、快速打开(Ctrl+P)里的文件名若与词条完全相同仍会被翻译——这些是 UI 与文件名混合的区域,出现实例时把对应容器加进禁区列表即可。

另含两个小 commit:lockfile 里扩展 workspace 版本号同步(0.0.4→0.0.6→0.0.7)、0.0.7 版本号与 CHANGELOG 准备。

Fixes #2

Verification

声明 验证 结果
禁区内文本不翻译 打了本补丁的 Cursor 3.18.25 实机 + CDP 注入 A/B 对照:.view-lines 容器里的 text.explorer-folders-view 里的 cloud 保持原样
禁区外界面照常翻译 同上:可翻译区容器内 "Cloud Agents" → "云端智能体"
补丁自身正常加载 同上:window.__cursorZhPatch = {active: true, count: 1506}
回归 npm test(vitest 15 项,含 2 项新增禁区契约测试) ✅ 15/15
构建 npm run build + npm run build:ext(tsc 编译)
未验证项 真实 Monaco 编辑器窗口内的截图级验证(CDP 自动化未能打开文件编辑器);禁区的 DOM 结构与真实编辑器一致,欢迎页/设置页实机翻译已核对 ⚠️ 见说明

AI use

  • Generative tooling made a substantive contribution

Tool(s) and scope: GLM-5.3-Flash (ZCode) —— 根因定位、修复实现、实机验证、词典构建与本文档均由 AI 完成;ggbdpq 复核后合并。

Checklist

  • Tests cover the change and fail without it(禁区选择器契约测试,去掉禁区即红)
  • typecheck 与受影响测试套件本地通过(vitest 15/15;tsc 编译通过)

词典含单词级 exact 词条(cloud/text/a/New 等),而注入脚本此前始终扫描
document.body:Monaco 把每行代码按 token 切成独立文本节点,代码里的
cloud/text、<a /> 的 a、文件树里名为 cloud 的文件夹都会与词条精确撞车
(issue #2 的三个截图症状)。纯删词条治不了这一类问题——cloud→云端
本身是正当的界面词条。

修法是在 TreeWalker 过滤器(所有文本翻译的必经之路)加一层禁区检查:
文本节点的祖先命中 NO_TRANSLATE_SELECTOR 即拒绝翻译。禁区覆盖
.view-lines(主编辑器/diff/聊天代码块/Notebook 的代码渲染)、
.explorer-folders-view(文件树)、.search-view .results(搜索结果)、
.xterm-rows(终端输出)、.monaco-breadcrumbs(面包屑路径与符号)。
输入框 placeholder/title/aria-label 的属性翻译路径不受影响。

ponytail 局限:标签页标题、Open Editors、快速打开(Ctrl+P)里的文件名
若恰好与词条全等仍会被翻译,属混合 UI 区,暂不做精确切分;出现实例时
再把对应容器加入禁区列表即可。

Fixes #2

Generated-by: GLM-5.3-Flash (ZCode)
@ggbdpq
ggbdpq merged commit ca2241f into main Sep 4, 2026
2 checks passed
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