Technical Documentation: maboloshi/github-chinese
ℹ️ Provenance: Multi-Tier Ingestion · CodeWiki Reference
Overview (`README.md`)
[!warning]
本项目从未发布至 GitCode,如您发现请截图并保留证据
目录树
TOC
🌟 功能特性
- 全面中文化 GitHub 界面元素(菜单栏、标题、按钮等)
- 智能正则匹配功能
- 支持项目描述的人机翻译
- 自动本地化时间元素
- 持续更新词库
🌐 兼容环境
| 浏览器类型 | 支持的脚本管理器 |
|---|---|
| Chrome / Chromium 内核 | Tampermonkey, Violentmonkey |
| Safari(全平台) | Tampermonkey, Macaque, Stay |
| Firefox / Gecko 内核 | Tampermonkey, Violentmonkey |
| Via(Android) | 内置管理器 |
| VS Code 集成浏览器 |
💻 安装指南
浏览器(Tampermonkey)
- 安装用户脚本管理器:
- 推荐:Tampermonkey
- 基于 Chrome / Chromium 内核浏览器:
- 务必开启 “扩展程序” 管理中的 “开发者模式”[^1]
- 务必开启 “扩展程序” 管理中脚本管理器扩展的 “允许运行用户脚本”
- 具体可参考 Tampermonkey 官方指引
- 选择安装源:
- 刷新页面后,插件即可生效
- 必要时,重启浏览器
[^1]: Chrome 切换到 Manifest V3后,使用问题
[!NOTE]
版本说明:
- 🚀 开发版:实时更新,每周五自动更新词库
- 🛡️ 稳定版:每周一同步开发版词库,更稳定
VS Code 集成浏览器
请参考扩展的自述文件。
🔧 本地调试
- 安装 Tampermonkey,并启用 “允许访问文件网址”。
- 下载词库文件到本地(如:
D:\github-chinese\locals.js) - 在脚本管理器中修改引用路径:js
// 原始路径 // @require https://raw.githubusercontent.com/... // 修改为 // @require file:///D:/github-chinese/locals.js - 刷新页面生效
[!IMPORTANT]
若无效:
- 进入 Tampermonkey 插件
设置页- 将
通用 - 配置模式设置为高级,进入高级设置模式- 找到
安全 - 允许脚本访问本地文件并设置为外部(@require 和 @resource)
[!TIP]
💡 温馨提示: 您可以将词库文件拖拽至浏览器地址栏,复制路径直接使用。
[
🔄 更新日志
最新版本
v1.9.4.4 (2026-06-20)
- 兼容修复
1.9.2.4,1.9.4.4:- 区分 React GlobalNav 与页面主体共享的 Primer 弹层,恢复下拉菜单即时、完整翻译。
v1.9.4.3 (2026-06-17)
- 兼容修复
1.9.2.3,1.9.4.3:- 收窄 React 搜索模块忽略范围,恢复仓库议题页和搜索页主体区域翻译。
v1.9.4.2 (2026-06-17)
- 兼容修复
1.9.2.2,1.9.4.2:- 在保持 React 头部搜索框稳定的前提下,恢复头部导航、菜单、搜索弹层和提示翻译。
v1.9.4.1 (2026-06-16)
- 临时修复
1.9.2,1.9.4:- 关于 GitHub 引入 React 机制导致头部搜索框消失。副作用整个头部导航全部加入忽略规则,无法翻译。
v1.9.4 (2026-05-17)
- 代码重构:
- 全面结构化重组:抽离配置常量
CONFIG、状态管理器State - 引入
safe()错误边界包裹关键函数,便于排错 - 函数拆分细化:
watchUpdate→setupMutationObserver+processMutations,transDesc→handleTransClick+requestRemoteTrans+showTransResult processMutations祖先去重:同一批 mutation 中后代节点不再重复遍历
- 全面结构化重组:抽离配置常量
- 新增功能:
- 翻译结果 UI 暗色主题适配(CSS 变量 +
prefers-color-scheme媒体查询),使用GM_addStyle插入 - 未命中词条管理器
MissedTermsManager(记录、导出 JSON、清空、统计、菜单) - 开发者模式(
CONFIG.DEV)控制未命中词条菜单显隐 - Tampermonkey
onurlchange事件支持(setupUrlChangeListener)
- 翻译结果 UI 暗色主题适配(CSS 变量 +
- 修复:
- 修复翻译 API 响应 XSS 漏洞:
innerHTML模板拼接改为textContent安全赋值(由 #692 报告) - 修复 TreeWalker 过滤器在
ignoreSelectors为空时抛出SyntaxError - 修复翻译按钮可能重复添加的问题(
nextSibling空值检查) - 修复
RELATIVE-TIMEshadowRoot 为 null 时的崩溃 - 修复从未识别页面离开后
State.pageConfig未清空,导致旧配置残留的问题
- 修复翻译 API 响应 XSS 漏洞:
- 性能优化:减少无效迭代,消除不必要的 DOM 遍历
v1.9.3 (2024-08-18)
- 新增功能:通过设置中文环境,自动本地化时间元素,仅保留
on开头的时间正则,并停用时间元素监视 - 优化突变翻译处理:
- 引入
characterDataPage规则,对特定页面启用筛选字符数据的变更 - 引入
ignoreMutationSelectorPage规则,忽略特定突变元素
- 引入
- 合并
reIgnoreClass,reIgnoreItemprop,ignoreId,ignoreTag为ignoreSelectorPage规则,处理全局及特定页面,忽略特定元素 - 引入全局缓存模式,减少重复构建包括不限于基于
page变化的忽略规则、正则规则数组等 - 调整:更新讯飞听见翻译引擎v2.0
- 优化:梳理、优化脚本
- 调整:调整词库语言代码为
zh-CN, 与环境语言设置一致
查看更多历史版本
v1.9.2 (2024-06-14)
- 适配
www.githubstatus.com - 适配
skills.github.com
v1.9.1 (2024-05-23)
- 更新
切换正则功能按钮
v1.9.0 (2023-12-09)
- 重新定义版本号规则, 如
1.9.0-2023-12-09。1.9.0: 主版本号(由项目所有者更新)2023-12-09:词库发布版本号(由 GitHub Action 自动更新)
- 加强: GitHub 源【开发版】每周一凌晨自动更新
词库发布版本号 - 加强: GreasyFork 源【稳定版】每周五凌晨自动更新
词库发布版本号, 词库内容同上一次GitHub 源【开发版】 - 加强:在
README.md中自动更新贡献者头像 - 更新: 忽略规则, 词条等
v1.8.5 (2023-08-31)
- 优化:
transDesc 函数代码 - 修复: 重复添加
translate-me翻译按钮 - 加强:
watchUpdate 函数新增节点文本更新的情况 - 调整:
transBySelector和transDesc函数延迟执行时间 - 更新: 忽略规则, 词条等
v1.8.4 (2023-08-08)
- 修复:
Itemprop过滤规则, 依然使用正则方式 - 修复:
tooltipped样式提示, 依然使用正则方式
v1.8.3 (2023-08-07)
- 梳理、优化脚本
- 更新: 忽略规则, 大量词条等
v1.8.2 (2023-05-15)
greasyfork 托管源切换到按页面精细化词条模式- 调整词库格式
- 功能加强: 优化
元素筛选器翻译逻辑 - 更新: 忽略规则, 大量词条等
v1.8.1 (2023-01-22)
- 修复: #8 与 dark reader 扩展发生冲突,导致时间显示出现问题
GitHub源开始切换到按页面精细化词条模式(开发版), 词库未完全迁移适配- 停止
greasyfork源词库文件的同步更新
v1.8.0 (2023-01-18)
- 删除:
TURBO-FRAME框架处理代码. Github 已调整新动态加载模式, 直接检测url的变化就能获取对应的page信息 - 新增: 支持时间元素的
Shadow DOM翻译, 并监听变化 - 新增: 启用并更新
时间元素翻译专项正则词条 - 新增: 仅当
page有效才翻译页面 - 修复: 原
简介翻译引擎GitHub中文社区失效, 改为讯飞引擎(测试) - 修复: 追加公共正则重复迭代的问题
- 修复: 正则标记变量
RegExp与构造函数new RegExp冲突 - 更新: 忽略规则, 词条等
预告, 下次将细化page匹配规则, 导致词库文件结构大调整, 词库文件会适当变大, 页面正则更精细效率会提升
v1.7.9 (2022-07-17)
GitHub 的 ajax 载入方式逐步从 defunkt/jquery-pjax 切换到 hotwired/turbo, 导致已有的动态监测方式逐步失效
目前, 通过以下修复:
- 新增
BODY元素新增监视 - 解析
TURBO-FRAME框架, 获取对应的page - 修复 github 新动态加载模式, 导致
翻译描述返回值无法插入 - 修复 github 新动态加载模式, 导致
chrome浏览器自带翻译功能卡死页面
其他更新:
- 修复
rePagePath,rePagePathRepo,rePagePathOrg匹配规则,限制路径匹配层次,排除干扰 - 直接使用网页URL
document.URL变化触发标题翻译和JS 筛选器翻译 - 修复
关闭正则无法生效, 需要刷新页面才生效 - 日常更新词库和忽略规则
- 更新
JS 筛选器规则
v1.7.8 (2022-06-29)
- 紧急修复: GitHub 变更了
document.body和title更新机制, 导致原有的监测更新规则部分失效, 目前使用document.documentElement监视整个页面 DOM 的变更 - 跳过
<HEAD>标签 标题翻译和JS 筛选器翻译, 依据 URL变化更新
v1.7.7 (2022-06-26)
- 新增
时间元素翻译功能 - 重写
页面标题翻译函数 - 梳理
遍历节点函数逻辑 - 优化
transPage函数,默认翻译公共部分 - 调整
getPage函数, 使ClassName匹配规则优先 - 优化
translate函数, 跳过不存在英文字母和符号,., 保留首尾空白部分等 - 部分函数重命名,使用
es6新语法 - 日常更新词库和忽略规则,修复一个
JS 选择器规则
v1.7.6 (2022-05-12)
- 日常更新词库和忽略规则
- 添加手动开启/禁用正则翻译,添加切换菜单
- 优化翻译文本函数:避免已翻译词汇二次匹配,提高效率;局部翻译优先于全局
[
📌 待办事项
🤝 参与贡献
欢迎通过以下方式参与贡献:
- 完善词库翻译(编辑
locals.js) - 提交议题报告,参与话题讨论
- 改进代码逻辑
翻译参考资源:
🖼️ 效果预览
🙏 特别鸣谢
核心团队
贡献者墙
一如既往,感谢我们出色的贡献者❤️!
贡献者列表,由 GitHub Action 自动生成
[
📈 项目统计
[
🎁 欢迎打赏
| 微信赞赏 | 支付宝赞赏 |
|---|---|
| ☕喝点咖啡继续干☕ | 🌶️来包辣条吧~🍪 |
Overview (`vscode-extension/README.md`)
GitHub 中文化 (VS Code 扩展)
一键安装 GitHub 扩展,实现 VS Code 集成浏览器中 GitHub 网页的中文化。
工作原理
- 扩展启用 VS Code 的 proposed
browserAPI(vscode.window.browserTabs+startCDPSession()) - 在扩展宿主侧从 南大镜像 拉取词库
locals.js与主脚本main.user.js,规避页面 CORS 限制 - 通过 CDP
Page.addScriptToEvaluateOnNewDocument直接注入源码(非 eval),绕过 github.com 的 CSP 限制(IBE 因使用new Function被 CSP 拦截) - 注入内容内置 GM_* 兼容层与 document-end 语义(等
DOMContentLoaded后执行)
先决条件
添加启动参数
VS Code 必须带 --enable-proposed-api maboloshi.github-chinese 参数启动,否则无法使用 browser API。
带参数启动 VS Code 的方式
打开运行对话框,输入:
cmd"%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe" --enable-proposed-api maboloshi.github-chinese或修改“开始”菜单的 VS Code 快捷方式,在
目标字段末尾追加 COMMAND_LINE_ARGUMENTS:cmd--enable-proposed-api maboloshi.github-chinese然后从“开始”菜单启动
安装方式
方案一:从 GitHub Actions 下载(推荐)
该方案需要登录 GitHub 账号,若你没有账号,请使用 方案二
打开本仓库的 Actions 页面
选择最近一次成功运行的 workflow
滚动到页面底部,在 Artifacts 区域下载
github-chinese-extension.vsix在 VS Code 中按
Ctrl+Shift+P打开命令面板输入
Extensions: Install from VSIX...并选择刚才下载的.vsix文件安装完成后,在 VS Code 集成浏览器中刷新 GitHub 页面即可生效
方案二:从源码构建
环境要求
构建步骤
在 PowerShell 中执行以下代码:
git clone https://github.com/maboloshi/github-chinese.git # 克隆仓库
# 若你的网络环境无法访问 GitHub 克隆仓库,请自行寻找加速器等解决
cd github-chinese/vscode-extension # 进入插件目录
npm install # 安装依赖
# 若你的网络环境缓慢,请使用这行命令:
# npm install --registry=https://registry.npmmirror.com
npx @vscode/vsce package # 打包插件构建完成后,按方案一的第 4-5 步安装生成的 .vsix 文件。
[!NOTE]
本扩展尚未上架 VS Code 市场,需通过 源码构建 或从 Actions 下载 VSIX 安装。
命令
GitHub 中文化: 检查注入状态— 查看 browser API 可用性、注入标签数与词库加载状态GitHub 中文化: 刷新集成浏览器注入— 重新拉取词库/主脚本并重新注入所有已打开的集成浏览器标签
常见问题
为什么打开 GitHub 页面没有汉化?
请检查以下几点:
- 确认已安装依赖扩展:Integrated Browser Extensions 必须已安装并启用
- 确认启动参数正确:VS Code 必须带
--enable-proposed-api boylett.integrated-browser-extensions参数启动 - 确认扩展已启用:在扩展面板中确认
GitHub 中文化扩展已启用 - 刷新页面:在 VS Code 的集成浏览器中按
Ctrl+R或F5刷新页面 - 重启 VS Code:尝试完全退出并重新启动 VS Code
调试
Ai Review (`docs/ai-review.md`)
AI 代码审查(DeepSeek)— 使用说明
本仓库内置一个"类 Copilot"的 AI 代码审查工作流:任何用户可自动或按需请求 DeepSeek 对 PR 进行中文代码审查,审查以机器人身份发布,每次审查消耗请求者自己的 DeepSeek 额度,仓库不保存任何密钥明文。
如何工作
flowchart LR
U[用户] -- 提交/评论 PR 或 /review --> W[GitHub Actions<br/>本仓库/fork]
W -- 拉取 PR diff --> D
W -- 调用 DeepSeek(用请求者 LLM_API_KEY) --> D[(DeepSeek)]
W -- 机器人身份发布中文审查 --> P[PR]script/ai_review.py:拉取 PR 元数据与 diff → 读取.github/copilot-instructions.md(强制中文)→ 调用 DeepSeek → 生成结构化审查(概览 / 问题分级 / 优点 / 重写建议)。- 发布身份:
- 默认:
github-actions[bot](无需任何额外配置)。 - 若配置了 GitHub App:以
gh-chinese-ai-reviewer[bot]发布(可发布到任意已安装该 App 的仓库,含上游)。
- 默认:
触发方式
| 触发 | 说明 |
|---|---|
pull_request(opened / synchronize / ready_for_review) |
打开或更新 PR 时自动审查(需工作流位于默认分支) |
评论 /review |
在 PR 上评论 /review 即按需审查 |
workflow_dispatch |
手动指定 repo 与 pr 审查任意公开 PR |
schedule(每 15 分钟) |
轮询「看护清单」中的上游 PR,响应其中由本仓库属主发出的 /review |
去重:同一 head SHA 只会审查一次(评论尾部 `` 标记)。
配置(fork 自建实例)
Secrets(Settings → Secrets and variables → Actions)
| 名称 | 必填 | 说明 |
|---|---|---|
LLM_API_KEY |
✅ | 你的 DeepSeek API key(https://platform.deepseek.com/api_keys)。只存在你自己的 fork,明文从不出你侧 |
APP_ID |
可选 | 用于以 App 机器人身份发布(见下「GitHub App」) |
APP_PRIVATE_KEY |
可选 | GitHub App 私钥(.pem 全文) |
LLM_BASE_URL / LLM_MODEL |
可选 | 默认 https://api.deepseek.com / deepseek-chat |
Variables(可选,Step 2 轮询用)
| 名称 | 说明 |
|---|---|
REVIEW_TARGET |
轮询的目标仓库,默认 maboloshi/github-chinese |
REVIEW_WATCHLIST |
逗号分隔的 PR 号,如 760,766;只轮询这些 PR 上的 /review |
GitHub App(可选,bot 身份发布)
- https://github.com/settings/apps/new 创建 App(名称勿以
GitHub/Gist开头) - 权限:Pull requests Read & write、Issues Write;Webhook 可关;安装范围 Any account
- 生成私钥
.pem;把APP_ID、APP_PRIVATE_KEY配进 Secrets - 安装到你自己的 fork(
Install App);发布到上游仓库时,请仓库维护者从 App 公共页 https://github.com/apps/安装
安全模型
- 任何人看不到明文:DeepSeek key 只存在于请求者自己的 fork secret / 本地;上游仓库零密钥。
- 自负额度:每次审查只用触发者自己的
LLM_API_KEY(secrets.LLM_API_KEY)。 - bot 身份:审查以
github-actions[bot]或 GitHub App 机器人发布,不占用用户账号。 - 提示词注入:密钥绝不进入 prompt;模型输出只作为文本渲染,不执行。
- 工作流安全:不使用
pull_request_target;第三方 Action 建议钉版本;不打印密钥。 - 已知限制:
- 上游
/review为轮询(约 15 分钟),非即时。 - fork PR 的
pull_request事件读不到 secrets → fork 内 PR 自动审需要把工作流放到 fork 默认分支;上游 PR 的自动审依赖 fork 侧push反查或轮询。 - 发布到上游需仓库维护者安装 GitHub App(可随时撤销)。
- 上游
常见问题
- 工作流没跑? 确认工作流文件在默认分支(
issue_comment/schedule/workflow_dispatch只在默认分支触发)。 - 提示缺
LLM_API_KEY? 在 fork 的 Secrets 添加。 /review没反应? 轮询有延迟(≤15 分钟);确认该 PR 在REVIEW_WATCHLIST中(若配置)。- 想只审一次? 去重按 head SHA,同一提交不会重复审查。
--- METRICS ---
- Files Extracted: 3
- Estimated Token Budget: ~6448 tokens
- Canonical Reference: https://codewiki.google/github.com/maboloshi/github-chinese