[关联 #809 / 派生版 Chrome 2.5.6] README 翻译异常:仓库识别备用判断及本地处理结果

Aperta
#810 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
javascript

Direzione di ricerca

The report identifies chrome/content.js in a separate derived extension and describes a possible README root replacement during an asynchronous translation request. Start by comparing that fork’s detectPageType() and translation writeback, cache, and success logging with this repository’s code; reproduce the reported cases before deciding whether they apply here. Done means confirming a problem in this repository and defining a reproducible fix; the reported patch and simulations are not evidence that the upstream userscript has the same defect.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug
问题/建议

已阅读 FAQ 和相关议题 #809。本次补充派生扩展环境下的观察及本地处理方式,供交叉排查。

项目归属:我使用的是 MaydayV/github-chinese 的 Chrome 扩展 2.5.6,并非本仓库的 Tampermonkey 脚本。 README 的 API 正文翻译、Token 记录等是派生版功能;下述派生版问题不直接认定为上游缺陷。如应在派生仓库处理,请告知。

原版现象与页面识别检查

Windows + Chrome,开启 README 翻译并配置 DeepSeek,API 连通性测试正常;正文不自动翻译,开启记录后未见记录,卸载重装无效。检查期间部分导航已汉化。

借助 Codex 检查三个页面(heygen-com/hyperframes、MadsLorentzen/ai-job-search、maboloshi/github-chinese),浏览器 DOM 中均未找到 analytics-location,但仍存在 octolytics-dimension-repository_nwo。匿名直接获取页面响应时,三者又均包含带 data-turbo-transient="true" 的 analytics-location。这与 #809 的识别风险相关,但我这里刷新后也曾看到标记缺失;尚未捕获它被移除的过程,不断言与 #809 的触发路径完全相同。

我已采用的本地处理方式

以派生仓库 chrome 分支提交 af04b753fa9c1ea6064abcd180a1ae654a833d1c(2.5.6)为基础,在 chrome/content.js 的 detectPageType() 中补充仓库识别。保留原来的 analytics-location 判断,同时要求备用元数据与当前 URL 匹配:

const repositoryNwo = document.head
    .querySelector('meta[name="octolytics-dimension-repository_nwo"]')
    ?.content?.trim() || '';
const pathRepository = pathname.split('/').slice(1, 3).join('/');
const hasRepositoryMetadata = hostname === 'github.com'
    && /^[^/]+\/[^/]+$/.test(repositoryNwo)
    && repositoryNwo.toLowerCase() === pathRepository.toLowerCase();
const isRepository = /\/<user-name>\/<repo-name>/.test(metaLocation)
    || hasRepositoryMetadata;

加载本地修复版时,将显示版本改为 2.5.6.1 以便区分,停用商店原版(未同时运行两版),通过 Chrome“加载已解压的扩展程序”加载,再重新配置 API、开启 README 翻译。未增加扩展权限,未修改 API 请求、译文写回、缓存或日志逻辑。

原版在缺少 analytics-location 的隔离测试中无法识别仓库首页、tree/blob;应用补丁后新回归测试与既有测试共 33 项通过,另通过 README 专项及语法检查。这些是代码测试,不代表真实翻译全过程已经稳定。

效果与限制:正文曾恢复中文,但随后刷新又出现英文,因此这个处理方式只解决一个识别条件,不能作为完整修复。

后续异常及尚未应用的建议

本地补丁版的日志出现 hyperframes 消耗 13,025 Tokens、已翻译节点 0、重试未翻译 0、剩余未翻译 0,却标记成功;检查时正文仍英文。另一仓库已翻译 316 个节点、剩余 43,标记部分完成。

对派生版原有实际函数做隔离模拟(假 DOM/假 API,非现场抓取),若请求期间整个 README 根元素被替换,旧根脱离文档但保留英文,可复现“已译 0、重试 0、剩余 0、success、可见正文仍英文”。相反,根正常连接而接口返回原文时,会记录 partial 和非零剩余。

候选解释:写回跳过 isConnected=false 的旧节点,剩余统计也过滤它们;旧根未被重新定位,可能误记成功并将旧英文缓存。上述 5 项对照测试通过,但尚未在浏览器中直接捕获根替换过程。

建议派生版在每次异步返回后及缓存/记录成功前校验根元素仍连接、仍是当前 README,并核对当前仓库;失效时停止本轮并安排重新定位,避免成功误报与旧英文缓存。此建议尚未应用到我的本地包。

以上排查和补丁借助 Codex 完成。希望协助确认页面识别的共同兼容问题,以及哪些部分应转交派生项目;不将模拟结果当作现场唯一根因,也不推断所有用户都会受影响。感谢维护!

步骤
  1. 在 Windows 的 Chrome 安装 MaydayV/github-chinese 商店扩展 2.5.6。
  2. 配置 DeepSeek API,保存并测试连通性,开启 README 翻译和记录。
  3. 打开 https://github.com/heygen-com/hyperframes ,观察正文与翻译记录;本机未自动翻译,重装无效。
  4. 按正文提供的备用识别代码修改并加载本地版,停用原版,重新配置翻译。
  5. 正文曾变成中文,随后刷新再次出现英文及“成功但 0 节点”的日志。

另一测试页面:https://github.com/MadsLorentzen/ai-job-search 。以上为本机观察步骤,不保证其他环境必现。

预期

仓库识别不应只依赖可能缺失的 analytics-location;README 翻译应作用于当前可见的正文。若页面在等待接口时替换了正文,不应把未写入译文的结果记录为成功或缓存为译文。

实际

原版 2.5.6:接口测试正常,但 README 不自动翻译,重装无效。

以下是仅改仓库识别后的本地版 2.5.6.1 记录(不是未修改商店版的日志):

  • 2026-10-19 22:35:43(UTC+8),heygen-com/hyperframes,DeepSeek,13,025 Tokens,成功,已翻译节点 0,重试未翻译 0,剩余未翻译 0;页面检查仍为英文。
  • 2026-10-19 22:35:40(UTC+8),madslorentzen/ai-job-search,DeepSeek,27,843 Tokens,部分完成,已翻译节点 316,重试未翻译 43,剩余未翻译 43。

剩余 43 个节点的计数本身不足以判定是接口问题或专有名词等文本导致。

附件

具体修复代码、观测日志和测试边界已写入正文。未附带 API Key 或私有配置。

浏览器名称

Google Chrome

浏览器版本

Google Chrome(Windows;本次未采集完整版本号)

脚本管理器名称

Others

脚本管理器版本

不适用:直接安装的 Chrome 扩展;后续通过开发者模式加载本地修复版,未使用 Tampermonkey。

插件版本

MaydayV/github-chinese Chrome 扩展 2.5.6;本地仓库识别补丁版 2.5.6.1(非本仓库油猴脚本版本)

Lingua principale
JavaScript
Stelle
35.1k
Fork
2k
Merge medio
2g 1h
PR unite (30g)
9

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di maboloshi/github-chinese

Tutte le issue di maboloshi/github-chinese

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.