ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

GitHubDesktop2Chinese高阶技巧:正则捕获组+第三参数动态替换,让映射不怕版本更新

GitHubDesktop2Chinese高阶技巧:正则捕获组+第三参数动态替换,让映射不怕版本更新 GitHubDesktop2Chinese高阶技巧正则捕获组第三参数动态替换让映射不怕版本更新【免费下载链接】GitHubDesktop2ChineseGithubDesktop语言本地化(汉化)工具 【GitHub桌面客户端中文汉化】项目地址: https://gitcode.com/gh_mirrors/gi/GitHubDesktop2ChineseGitHubDesktop2Chinese是一款 GitHub Desktop 中文汉化语言本地化工具它通过正则匹配把 GitHub 桌面客户端中main.js、renderer.js里的英文文本替换为中文。本文聚焦它最核心的高阶能力正则捕获组 第三参数动态替换——让汉化合规映射在 GitHub Desktop 频繁更新、变量名不断变化的情况下依然稳定生效几乎不用维护。为什么映射会在版本更新后“失效”GitHub Desktop 每次发新版后汉化都要重新跑一次。普通两条映射[查找, 替换]大多能直接命中但有一类文本特别脆弱客户端代码经过压缩函数里的变量名会被混淆成a、n、$_之类的短名这些短名每个版本都会变写死的替换文本到新版本就对不上了。硬编码变量名的映射版本一更新就失效甚至替换出错导致客户端无法打开。这就是高阶映射要解决的问题。认识 localization.json 的三参数映射结构所有中英映射都保存在 json/localization.json 中main数组对应main.js、renderer数组对应renderer.js。普通条目是两元素数组[File, 文件(F)]而高阶条目是三元素数组[查找正则, 替换文本, 动态查找正则]。第三个参数就是“捕获组模板”的钥匙加载器会用它去 JS 文件里现查现取动态改写第二个参数详见 GitHubDesktop2Chinese.cpp 中的处理逻辑。高阶原理#{number} 占位符如何被动态替换执行顺序只有三步非常好记全局查找加载器拿第三个参数的正则去整个 JS 文件里搜索捕获匹配组命中后取出正则捕获组第 1 组、第 2 组……的实际内容占位符替换把第二个参数中形如#{1}、#{2}的标记逐一替换为捕获到的真实文本最后才执行正式替换。对应源码中这一小段核心逻辑可以直观看到#{i}是怎么被替换掉的for(size_t i 1; i match.size(); i) { std::string replace_str #\\{ std::to_string(i) \\}; item.value()[1] std::regex_replace(item.value()[1].getstd::string(), replace_regx, match[i].str()); } 效果替换文本不再依赖“猜”变量名而是运行时从当前版本里真实捕获版本怎么更新都不怕。实战示例一条能扛住版本更新的菜单映射json/localization.json 的main数组中就有这样一条“关于汉化插件”菜单映射已简化[id:\about\\\}\\], id:\about\},{label:\关于汉化插件(Z)\,click(){#{1}.shell.openExternal(项目页地址)}}], click\\(\\)\\{([a-zA-z\\$_]{1,3})\\.shell\\.openExternal]逐段拆解第 1 项锚定about菜单项的结尾位置作为插入点第 3 项在文件里找click(){ 变量.shell.openExternal这种真实代码结构捕获组([a-zA-z\$_]{1,3})抓出当前版本里真实的变量名第 2 项#{1}会被自动换成抓到的变量名拼出一条与当前版本完全匹配的菜单代码。换句话说即使这个变量在新版里从n变成了$_x映射也照样正确。编写三参数映射的实用技巧想自己动手补充或修复映射先看 json/关于一些注意事项.txt 中的编写注意事项再配合下面几个技巧第三参数尽量窄而准把正则锚定在你真正要改的那段代码结构上命中越精确越安全善用多个捕获组#{1}、#{2}……按组序引用一条映射可以动态填充多处内容依赖内置保护机制若第三参数在当前版本中找不到加载器会自动跳过该条目并给出警告避免错误文本插入导致客户端打不开见 GitHubDesktop2Chinese.cpp先在 dev 数组试跑把新条目放进main_dev或renderer_dev按住Shift运行开启“仅替换指定映射项”快速验证效果后再移入正式数组用失效检测复查开发者选项支持对映射项做失效检测可一次性列出所有失配条目方便批量维护。版本兼容与其他进阶配置minversion 检查JSON 顶层的minversion声明所需的最低加载器版本版本不足时加载器会提示升级或让你确认强制执行select 选择性替换localization.json的select节点支持带提示的可选汉化项例如“是否强制开启预览版选项”“是否要求 AI 将生成结果转为中文”默认关闭自动备份恢复汉化会先备份原文件.bak出现异常时可从备份恢复贡献汉化克隆仓库后按说明补充条目并提交 PR 即可参与维护仓库地址https://gitcode.com/gh_mirrors/gi/GitHubDesktop2Chinese小结能力说明正则捕获组第三参数负责“查”捕获组负责“抓”#{number}占位符第二个参数中动态填充真实匹配内容失效自动跳过找不到匹配就不替换避免破坏程序dev 数组 Shift 试跑新映射先测试、后合入掌握“正则捕获组 第三参数动态替换”这套组合拳你就能理解 GitHubDesktop2Chinese 为什么维护成本极低——映射不再追版本而是让版本来适配映射。【免费下载链接】GitHubDesktop2ChineseGithubDesktop语言本地化(汉化)工具 【GitHub桌面客户端中文汉化】项目地址: https://gitcode.com/gh_mirrors/gi/GitHubDesktop2Chinese创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表