告别繁琐操作!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
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0150- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0111



