告别繁琐操作!GitHub 中文化插件快捷键控制翻译全攻略
你是否曾在使用 GitHub 时,因频繁切换翻译状态而感到效率低下?是否希望通过简单的键盘操作就能掌控翻译功能的开关?本文将带你深入了解如何为 GitHub 中文化插件添加自定义快捷键控制,让你的开发体验更加流畅高效。
读完本文后,你将能够:
- 理解 GitHub 中文化插件的工作原理
- 掌握添加自定义快捷键的方法
- 学会修改和扩展翻译功能
- 解决常见的快捷键冲突问题
插件工作原理概述
GitHub 中文化插件(main.user.js)通过监听页面变化并应用翻译规则,将 GitHub 界面转换为中文。其核心功能包括:
- 页面类型检测:通过 URL 和页面元素识别当前页面类型(仓库、个人资料等)
- 翻译规则应用:根据页面类型应用对应的静态翻译和正则翻译规则
- 动态内容监听:使用 MutationObserver 监控页面变化并实时翻译
- 功能开关控制:通过菜单命令启用/禁用正则翻译和描述翻译功能
核心代码结构
插件的主要逻辑集中在 main.user.js 中,关键函数包括:
init(): 初始化插件,设置事件监听和菜单traverseNode(): 遍历 DOM 节点并应用翻译transText(): 执行文本翻译registerMenuCommand(): 注册用户菜单命令
翻译规则存储在 locals.js 中,包含静态翻译词条和正则表达式翻译规则。
快捷键功能设计与实现
要添加快捷键控制,我们需要实现以下功能:
- 快捷键事件监听
- 翻译状态切换逻辑
- 用户反馈机制
步骤 1:定义快捷键配置
首先,在配置区域添加快捷键设置:
// ==UserScript==
// @name GitHub 中文化插件
// @namespace https://github.com/maboloshi/github-chinese
// @description 中文化 GitHub 界面的部分菜单及内容
// @version 1.9.3-2025-10-17
// @author 沙漠之子
// @license GPL-3.0
// @match https://github.com/*
// @grant GM_registerMenuCommand
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_notification
// ==/UserScript==
(function() {
'use strict';
// 全局配置区(添加快捷键设置)
const CONFIG = {
// ... 现有配置 ...
shortcuts: {
toggleTranslation: {
key: 't',
altKey: true,
ctrlKey: true,
description: "切换翻译功能 (Ctrl+Alt+T)"
}
}
};
const FeatureSet = {
enable_RegExp: GM_getValue("enable_RegExp", true),
enable_transDesc: GM_getValue("enable_transDesc", true),
enable_translation: GM_getValue("enable_translation", true) // 新增翻译总开关
};
// ... 其余代码 ...
})();
步骤 2:实现快捷键监听函数
添加一个处理键盘事件的函数,用于检测快捷键组合:
function handleKeyboardShortcuts(e) {
// 忽略输入框中的按键
if (['INPUT', 'TEXTAREA', 'SELECT'].includes(e.target.tagName)) {
return;
}
// 检查是否按下了翻译切换快捷键 (Ctrl+Alt+T)
if (e.ctrlKey && e.altKey && e.key.toLowerCase() === CONFIG.shortcuts.toggleTranslation.key) {
e.preventDefault();
toggleTranslation();
}
}
function toggleTranslation() {
FeatureSet.enable_translation = !FeatureSet.enable_translation;
GM_setValue("enable_translation", FeatureSet.enable_translation);
// 立即应用更改
if (FeatureSet.enable_translation) {
traverseNode(document.body); // 开启翻译,重新翻译整个页面
} else {
location.reload(); // 关闭翻译,刷新页面恢复原状
}
GM_notification(`翻译功能已${FeatureSet.enable_translation ? '开启' : '关闭'}`);
}
步骤 3:注册快捷键事件监听
在初始化函数中添加事件监听器:
function init() {
// ... 现有初始化代码 ...
// 注册快捷键事件
document.addEventListener('keydown', handleKeyboardShortcuts);
// 检查翻译功能状态
if (!FeatureSet.enable_translation) {
console.log("翻译功能当前处于关闭状态");
}
// ... 其余初始化代码 ...
}
步骤 4:修改翻译函数添加开关控制
修改 traverseNode 函数,添加翻译总开关控制:
function traverseNode(rootNode) {
// 如果翻译功能已关闭,直接返回
if (!FeatureSet.enable_translation) return;
const start = performance.now();
// ... 其余代码保持不变 ...
}
步骤 5:添加菜单选项
在 registerMenuCommand 函数中添加快捷键说明:
function registerMenuCommand() {
const createMenuCommand = (config) => {
// ... 现有代码 ...
};
const menuConfigs = [
{
label: "翻译功能",
key: "enable_translation",
callback: newFeatureState => {
if (newFeatureState) {
traverseNode(document.body);
} else {
// 这里可以选择重新加载页面或恢复原始文本
GM_notification("翻译功能已关闭,请刷新页面生效");
}
}
},
// ... 现有菜单项 ...
{
label: `快捷键: ${CONFIG.shortcuts.toggleTranslation.description}`,
key: "shortcut_info",
callback: null // 仅作为信息展示,无切换功能
}
];
menuConfigs.forEach(config => createMenuCommand(config));
}
功能测试与冲突解决
添加快捷键功能后,需要进行充分测试以确保稳定性和兼容性:
测试步骤
-
基本功能测试:
- 安装修改后的脚本 main.user.js
- 按下 Ctrl+Alt+T,确认翻译功能能正常开关
- 检查菜单中"翻译功能"选项状态是否同步更新
-
冲突测试:
- 在不同页面(仓库、issues、PR等)测试快捷键
- 在文本输入框中测试快捷键是否被正确忽略
- 与浏览器默认快捷键对比,确保无冲突
-
性能测试:
- 监控页面加载时间变化
- 检查控制台是否有错误或警告
常见问题解决
-
快捷键不生效:
- 检查是否有其他扩展占用了相同快捷键
- 确认浏览器设置中未禁用用户脚本的键盘事件
-
翻译状态不同步:
- 清除浏览器缓存和 GM_setValue 存储的数据
- 检查
GM_setValue和GM_getValue调用是否正确
-
页面刷新问题:
- 如果不需要完全刷新,可以实现更复杂的恢复机制
- 修改
toggleTranslation函数,实现不刷新页面恢复英文
高级自定义选项
自定义快捷键组合
用户可以根据个人习惯修改快捷键组合,例如改为 Alt+T:
shortcuts: {
toggleTranslation: {
key: 't',
altKey: true,
ctrlKey: false, // 将ctrlKey设为false
description: "切换翻译功能 (Alt+T)"
}
}
添加更多快捷键功能
可以扩展快捷键功能,例如添加仅翻译描述的快捷键:
// 添加新的快捷键配置
shortcuts: {
// ... 现有配置 ...
translateDescription: {
key: 'd',
altKey: true,
ctrlKey: true,
description: "翻译描述 (Ctrl+Alt+D)"
}
}
// 在handleKeyboardShortcuts中添加
if (e.ctrlKey && e.altKey && e.key.toLowerCase() === CONFIG.shortcuts.translateDescription.key) {
e.preventDefault();
if (FeatureSet.enable_transDesc && CONFIG.DESC_SELECTORS[pageConfig.currentPageType]) {
transDesc(CONFIG.DESC_SELECTORS[pageConfig.currentPageType]);
GM_notification("已尝试翻译描述内容");
} else {
GM_notification("描述翻译功能未启用");
}
}
总结与展望
通过本文介绍的方法,我们成功为 GitHub 中文化插件添加了快捷键控制功能。现在,你可以通过 Ctrl+Alt+T 快速切换翻译状态,极大提升了操作效率。
已实现功能回顾
- ✅ 添加了翻译总开关
- ✅ 实现了 Ctrl+Alt+T 快捷键控制
- ✅ 增加了菜单状态显示
- ✅ 添加了用户通知反馈
- ✅ 实现了状态持久化存储
未来扩展方向
- 自定义快捷键界面:开发图形界面允许用户自定义快捷键
- 更多翻译控制选项:针对不同页面元素的翻译控制
- 翻译状态记忆:记住不同仓库的翻译偏好设置
- 快捷键冲突检测:自动检测并提示潜在的快捷键冲突
希望本文能帮助你更好地定制和使用 GitHub 中文化插件。如有任何问题或改进建议,欢迎通过项目 Issues 提出反馈。
如果你觉得这个功能有用,请点赞收藏本教程,并关注项目更新以获取更多实用技巧!
项目地址:https://gitcode.com/gh_mirrors/gi/github-chinese 核心代码:main.user.js 翻译词库:locals.js
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
ruoyi-plus-soybeanRuoYi-Plus-Soybean 是一个现代化的企业级多租户管理系统,它结合了 RuoYi-Vue-Plus 的强大后端功能和 Soybean Admin 的现代化前端特性,为开发者提供了完整的企业管理解决方案。Vue06- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00



