探秘 GitHub 汉化插件内部:一份 3 万行词库如何完成界面中文化
探秘 GitHub 汉化插件内部一份 3 万行词库如何完成界面中文化【免费下载链接】github-chineseGitHub 汉化插件GitHub 中文化界面。 (GitHub Translation To Chinese)项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese深夜Pull Request 页面跳出红色的 Merge conflict 警告我点开 Tampermonkey 面板GitHub 汉化插件正在后台运行——界面上其余的英文几乎都已被替换成中文。这个由沙漠之子维护的开源用户脚本代码本体不过一个 main.user.js 加上一份 locals.js却要应对 GitHub 数百种页面和不断改版的 React 前端。它的运转方式远比查字典替换复杂。这篇文章尝试把它拆开看看一个词库驱动的汉化系统究竟如何工作。表面之下先回答哪些页面要翻译打开项目源码最先注意到的是一份 29623 行的 locals.js——整个仓库最大的单个文件。它并不是简单的英中对照表而是三层结构匹配 pathname 的正则规则、翻译忽略规则、按页面归类的词条库。文件头部的版权注释记录了它的来路2016 至 2021 年由楼教主维护2021 年起由沙漠之子接手GPL-3.0 协议。I18N.conf是这一切的入口。它先用正则匹配当前 URL 的 pathname把页面归类为 repository/tree、issues、profile、gist 等类型每个类型下再挂上对应的词条和选择器。main.user.js 里另有一张站点域名映射表把 skills.github.com、education.github.com、gist.github.com 这类子站点单独区分。翻译不是全文扫描而是先确定这是哪一页、该用哪组规则。时机问题为什么刷新瞬间界面就已变成中文词库就位后第二个问题是如何在正确的时机下手。脚本声明了run-at document-start赶在页面渲染前注入真正支撑动态内容的是一个配置精细的 MutationObserver——childList 监听节点增删、characterData 监听文本变化attributeFilter 则盯住 value、placeholder、aria-label 这些属性。为了不让翻译操作自身触发新的观察事件脚本还维护了两套忽略配置分别作用于初始遍历与后续变化。这套机制最直接的收益体现在应对 GitHub 自身的迭代上。2026 年 6 月的更新日志里连续几个小版本都在与 React 机制周旋头部导航改用 React 渲染导致搜索框消失、Primer 弹层与页面主体共享导致下拉菜单翻译延迟、搜索模块忽略范围过宽导致仓库议题页失译。每一次兼容修复都是观察器与页面生命周期赛跑的结果。精确性翻译的误伤防线机械替换文本最怕误伤把用户自己写的代码注释、README 内容也一并翻掉。项目为此设了两道防线。第一道是忽略规则——.highlight、.notranslate、[translateno]这类选择器直接排除article.markdown-body内的仓库 README 正文也明确不参与翻译避免把仓库介绍变成一段机翻残片。第二道防线是回归测试。仓库 test/ 目录下躺着 issue-700、issue-702、issue-761 三个回归用例用 Node 内置的 test runner 加载 locals.js断言忽略规则确实存在于两套配置之中。README 示例代码不被翻译不是靠运气而是被测试钉死的约定这几条规则对应的正是历史 issue 里用户真实踩过的坑。词库之外机器翻译与开发者模式静态词条覆盖不了的内容项目引入了人机协作。仓库描述这类用户自定义文本会通过讯飞听见的在线翻译接口做即时翻译CONFIG.DEV true打开开发者模式后会激活未命中词条管理器——脚本把匹配不到词条的英文记录下来维护者可以在菜单里一键导出 JSON、查看统计或清空记录。翻译覆盖率不是拍脑袋定的而是由使用者不断反馈驱动的增量过程。主题适配也在这个层面完成。项目为浅色与深色两套主题分别维护样式变量翻译后的按钮、提示框在暗色背景下依然可读而不是简单地把文字颜色压暗了事。让它持续运转版本节奏与协作机制汉化是个无底洞——GitHub 每次改版词库都要跟着迭代。项目因此拆成双版本线开发版每周五自动更新词库稳定版每周一同步一次后者更保守适合生产环境使用者。词库的维护也不再依赖单人劳作docs/ai-review.md 记录了一套基于 DeepSeek 的 AI 代码审查工作流任何人提交的 PR 都会以机器人身份获得结构化中文审查意见密钥只存在请求者自己的 fork 中上游仓库零密钥。项目还留了一条不依赖 Tampermonkey 的路径——vscode-extension/ 目录下的 VS Code 集成浏览器扩展让编辑器里的 GitHub 预览同样呈现中文界面。从浏览器脚本到桌面工具同一套词库被复用了多次。回头看这个项目最值得琢磨的不是翻译了什么而是它如何回答三个问题哪些页面要翻、什么时候翻、哪些绝对不能翻。3 万行词库只是答案的载体真正的骨架是正则路由 观察器 忽略规则 回归测试这套组合。如果你也在维护一个依赖外部平台动态内容的工具这套思路或许比翻译结果本身更有借鉴价值——那么当 GitHub 下一次改版时你手里的工具准备好接招了吗【免费下载链接】github-chineseGitHub 汉化插件GitHub 中文化界面。 (GitHub Translation To Chinese)项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

强化学习记忆智能体训练:数据课程设计如何提升问答性能

强化学习记忆智能体训练:数据课程设计如何提升问答性能

1. 项目概述:当RL记忆智能体“上学”时,课程表有多重要?最近在跟几个做强化学习(RL)和问答(QA)的朋友聊天,大家不约而同地都在折腾“记忆智能体”(Memory Agents&#xf…

2026/10/10 23:45:56 阅读更多 →
AI视频为什么不能超时就重试:一个 RequestId 如何守住生成额度

AI视频为什么不能超时就重试:一个 RequestId 如何守住生成额度

一次创建请求可能已经到达供应商;客户端没收到响应,不等于任务没有产生。 摘要| AI 视频生成是长任务:创建接口可能先返回任务句柄,真正结果要在之后查询。最危险的处理不是超时本身,而是把不确定状态直接解…

2026/9/28 23:51:54 阅读更多 →
从安装到玩转:Blender 3MF插件完整进阶指南

从安装到玩转:Blender 3MF插件完整进阶指南

从安装到玩转:Blender 3MF插件完整进阶指南 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 把模型发给打印服务商,对方回一句"怎么没有颜色和…

2026/10/10 21:08:01 阅读更多 →

最新新闻

Blume内容编写完全指南:Frontmatter、Markdown语法与页面Includes机制详解

Blume内容编写完全指南:Frontmatter、Markdown语法与页面Includes机制详解

【免费下载链接】blume The open-source docs framework for humans and agents. 项目地址: https://gitcode.com/gh_mirrors/blum/blume 点击查看 免费下载 Blume 是一个面向人类与 AI Agent 的开源文档框架(docs framework),它…

2026/10/10 23:45:18 阅读更多 →
【效率提升利器】4款支持多语言的AI辅助编程利器:从C#到GitHub Copilot的TaoToken统一接入实践

【效率提升利器】4款支持多语言的AI辅助编程利器:从C#到GitHub Copilot的TaoToken统一接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 23:45:18 阅读更多 →
网关离线、安全软件拦截全修复|Windows+Mac 双端 OpenClaw 龙虾智能体落地手册(TaoToken 统一 Key 版)

网关离线、安全软件拦截全修复|Windows+Mac 双端 OpenClaw 龙虾智能体落地手册(TaoToken 统一 Key 版)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 23:45:18 阅读更多 →
Java+SpringBoot+SSM:传媒直播管理系统构建实战

Java+SpringBoot+SSM:传媒直播管理系统构建实战

做传媒直播管理系统这个项目,起因其实特别接地气——一个做MCN的朋友找到我,他们的直播业务铺开了,但管理手段还停留在微信群加Excel的原始阶段。主播档期要手动排,礼物流水要对账到半夜,平台分成算不干净,…

2026/10/10 23:44:17 阅读更多 →
让 AI 助手记住你读过的网页:Hister MCP 接口接入实战

让 AI 助手记住你读过的网页:Hister MCP 接口接入实战

让 AI 助手记住你读过的网页:Hister MCP 接口接入实战 【免费下载链接】hister Your own search engine 项目地址: https://gitcode.com/GitHub_Trending/hi/hister 大模型越来越擅长"回答",却很难"记得"你上周读过什么。它不…

2026/10/10 23:44:17 阅读更多 →
火焰识别不一定要CNN:BP神经网络从特征提取到火灾报警落地

火焰识别不一定要CNN:BP神经网络从特征提取到火灾报警落地

简介:基于BP神经网络的火焰识别项目,面向机器学习初学者与图像识别研究者,提供一套完整可运行的MATLAB实现方案,用于火焰与火灾图像的自动分类。压缩包内共有八百四十五个文件,包括八百一十三张JPG样本图像、十七个MAT…

2026/10/10 23:44:17 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →