SystemInformer 汉化实操指南:把系统监控工具界面改成中文的完整流程
【免费下载链接】systeminformerA free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars & Solutions, Inc. @ https://windows-internals.com项目地址: https://gitcode.com/GitHub_Trending/sy/systeminformer
SystemInformer 是一款免费开源的系统监控工具,但默认界面全是英文。本文带你逐项完成中文配置:替换语言标识、翻译资源字符串、修正源码里的硬编码文本,最后编译验证。跟着做一遍,大约一小时后就能得到一个中文的监控界面。
前置条件
- 目标读者:在 Windows 上用过 SystemInformer、会基本命令行操作的开发者
- 装有 Visual Studio 2022(含 C++ 工作负载),或 CMake ≥ 3.30 加 MSVC 工具链
- 克隆仓库并进入根目录:
git clone https://gitcode.com/GitHub_Trending/sy/systeminformer - 预计耗时:约 60 分钟(含编译)
模块速览
SystemInformer/主程序:对话框和菜单文本大多写在SystemInformer.rc里,少数页面名直接硬编码在 C 源码中plugins/插件集:每个插件有独立的.rc资源文件和自己的语言声明cmake/toolchain/构建工具链:提供 MSVC 编译器,源码里的中文字符要靠它编译生效
分步实操
替换主程序的语言标识行
这一步先让编译器知道资源按简体中文处理,后面的字体与编码选择才会走中文路径。
打开SystemInformer/SystemInformer.rc,改动在第 20 行附近。注意LANGUAGE上方的#if宏条件要一起换;版本资源SystemInformer/version.rc同样处理:
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ZHCS) // 原为 AFX_TARG_ENU LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED // 原为 LANG_ENGLISH, SUBLANG_ENGLISH_US确认方式:重新构建后,用资源查看器查看可执行文件的资源段,语言应显示为简体中文(zh-CN)。
语言标识就位后,开始真正的翻译工作:对话框文字就写在资源文件里。
把资源文件的对话框文字换成中文
这一步解决所有对话框的窗口标题和按钮文本。
打开SystemInformer/SystemInformer.rc,以第 358 行附近的僵尸进程对话框为例。改 CAPTION 和按钮文字,后面的控件 ID 和坐标保持不变:
CAPTION "Zombie Processes" PUSHBUTTON "Terminate",IDC_TERMINATE,115,200,50,14 PUSHBUTTON "Save...",IDC_SAVE,170,200,50,14改成:
CAPTION "僵尸进程" PUSHBUTTON "结束",IDC_TERMINATE,115,200,50,14 PUSHBUTTON "保存...",IDC_SAVE,170,200,50,14想保留键盘快捷键时,给快捷字符前加&(如&Scan)。确认方式:运行 exe 打开该对话框,标题和按钮已是中文。
还有部分文字根本不在资源文件里,而是直接写在 C 代码中。
翻译源码里硬编码的页面名
这一步解决主窗口左侧导航的页面名称。
在SystemInformer/mainwnd.c中搜索PhMwpCreateInternalPage,第 656 行附近有三处:
PhMwpCreateInternalPage(L"Processes", 0, PhMwpProcessesPageCallback); PhMwpCreateInternalPage(L"Services", 0, PhMwpServicesPageCallback); PhMwpCreateInternalPage(L"Network", 0, PhMwpNetworkPageCallback);只改第一个参数:L"Processes"改L"进程",L"Services"改L"服务",L"Network"改L"网络"。L前缀必须保留,否则会被按窄字符串处理导致乱码。确认方式:左侧导航的三个页面名显示为中文。
只改主程序的话,插件对话框还是英文的。
统一所有插件的语言标识
这一步解决自带插件的对话框语言。
每个插件的.rc(第 19 行附近)和version.rc都有独立声明,例如plugins/ExtendedTools/ExtendedTools.rc、plugins/DotNetTools/DotNetTools.rc、plugins/HardwareDevices/HardwareDevices.rc,内容都是同一行:
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US全部替换为LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED。确认方式:打开任一插件对话框,其资源语言与主程序一致。
文字改完,重新构建后才会真正生效。
编译验证中文版
这一步产出最终可执行程序。
在仓库根目录执行下面两条命令,工具链指向cmake/toolchain/里的 MSVC 配置:
cmake -B build -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain/msvc-amd64.cmake cmake --build build --config Release也可以直接用 Visual Studio 打开SystemInformer.sln选 Release 构建。内核驱动(KSystemInformer)默认不参与构建,不影响用户态界面。确认方式:运行新的 exe,逐页走一遍主界面,剩余英文处就是漏翻的字符串。
排查与纠错
如果你看到中文变成方框或乱码 → 多半是文件编码与编译器编码不一致,MSVC 默认按系统代码页读源码 → 把改过的.rc和.c存为带 BOM 的 UTF-8,或给构建加/utf-8参数,再重新编译。
如果你重新构建后界面还是全英文 → 多半是运行的旧二进制,或构建没包含插件(SI_WITH_PLUGINS默认关闭)→ 先确认可执行文件的时间戳,需要插件时配置阶段加-DSI_WITH_PLUGINS=ON。
如果你主程序是中文、某个插件对话框仍是英文 → 多半是漏改了该插件的 LANGUAGE 行,每个插件都是独立声明 → 全局搜索LANG_ENGLISH,把剩余文件逐个改完。
维护与贡献
- 上游发新版时,先对照新增的对话框和字符串,再重跑一遍「语言标识 + 字符串」的批量替换,跟版成本低
- 向社区提交:fork 仓库 → 拉分支 → 翻译并验证 → 提交 PR,描述里附上界面前后对比
- 建议维护一份统一术语表,例如 Handles 统一译「句柄」、Processes 统一译「进程」,主程序与插件用词一致
写在最后
做完这几步,你的 SystemInformer 不再是满屏英文,而是可以逐字读懂的系统监控工具。接下来:构建完把主窗口每个页面过一遍,把漏翻的字符串记成清单,下次再坐下来改就快很多了。🚀
【免费下载链接】systeminformerA free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars & Solutions, Inc. @ https://windows-internals.com项目地址: https://gitcode.com/GitHub_Trending/sy/systeminformer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考