Locale Emulator 完整使用指南:Windows 区域语言模拟器的源码构建与实战
Locale Emulator 完整使用指南:Windows 区域语言模拟器的源码构建与实战
【免费下载链接】Locale-EmulatorYet Another System Region and Language Simulator项目地址: https://gitcode.com/gh_mirrors/lo/Locale-Emulator
Locale Emulator 是一款免费开源的 Windows 系统区域与语言模拟器(System Region and Language Simulator)。它让指定程序以日语、简体中文等目标区域环境启动,全程不改动系统区域设置、无需重启。跟着本文走一遍,你就能在几小时内把它跑起来,并为自己的程序配好专属语言环境。
入手前必读:为什么不直接改系统区域?
想让一个只适配日文环境的程序正常显示,最常见的办法是去"控制面板 → 区域"里切换系统区域设置。但这会带来三个麻烦:设置是全局的,影响电脑上所有程序;改动往往需要重启才能生效;改来改去既繁琐,也容易造成环境混乱。
Locale Emulator 的思路是反过来:不动系统,只把"区域"这一层包装到单个程序上。你配置一次,之后右键一下就能以目标环境运行,跑完即结束,系统本身纹丝不动。
工作原理:把程序装进一个"区域气泡"里
打个比方:系统区域像是整栋楼共用的水电线路,传统做法是整栋楼换线路再重启;Locale Emulator 则是给某间屋子单独接一套临时管线,屋里按新标准运行,其他屋子照常。
落到代码上,这个"气泡"由几部分拼出来:
编码与字符集模拟:LEProc/Program.cs 会按你选的区域算出 ANSI 码页、OEM 码页、LCID 和默认字符集(例如日语对应码页 932、Shift-JIS 字符集),连同时区一起交给核心库创建目标进程。
注册表虚拟化:程序启动时,LEProc/RegistryEntriesLoader.cs 会把InstallLanguage、ACP、OEMCP等语言相关键值按目标区域重算一遍(RedirectRegistry选项,默认开启)。开启高级选项后,还会替换Locale、PreferredUILanguages等系统 UI 语言键。这些替换只发生在被启动的进程内部,系统真实注册表不受影响。
加载核心:真正干活的是 LoaderDll.dll 与 LocaleEmulator.dll 两个核心库,它们独立于本仓库,需要单独构建后复制到构建目录。
各模块职责如下:
| 模块 | 职责 | 适用场景 |
|---|---|---|
| LEGUI | WPF 图形界面,管理全局与单个应用的区域配置 | 创建、修改、删除配置文件 |
| LEContextMenuHandler | Shell 扩展,为文件右键菜单注入 Locale Emulator 项 | 日常一键启动 |
| LEProc | 核心启动器:计算码页/字符集、做注册表重定向并启动目标程序 | 真正执行模拟运行 |
| LEInstaller | 注册/卸载 shell 扩展,支持当前用户或全部用户 | 首次部署与卸载 |
| LECommonLibrary | 配置文件的读取与写入、系统辅助函数 | 各模块共享的基础层 |
| LEUpdater | 检查并提示新版本 | 后台自动检查更新 |
源码构建与安装:从 clone 到右键菜单
构建流程来自 README.md,注意第 5 步:核心库在另一个仓库,需要单独获取后复制 dll。
- 获取源码:执行
git clone https://gitcode.com/gh_mirrors/lo/Locale-Emulator拿到本项目。 - 编译本项目:安装 Microsoft Visual Studio 2015 或 2017,打开 LocaleEmulator.sln,执行"生成解决方案"。
- 准备核心库:获取 Locale-Emulator-Core 并构建,把
LoaderDll.dll和LocaleEmulator.dll复制到本项目的构建输出目录。 - 注册右键菜单:运行
LEInstaller,普通用户点 Install(写入HKEY_CURRENT_USER),全部用户点 Install All Users(需要管理员,写入HKEY_LOCAL_MACHINE)。 - 验证:重启资源管理器或电脑(从旧版本升级时必须要),右键任意
.exe应能看到 Locale Emulator 菜单。
提示:核心库的两个 dll 若被杀毒软件隔离,LEProc 会直接提示"Some of the core Dlls are missing"。把相关文件加白名单再重新安装即可。
首次配置:一个 Profile 能做什么
首次运行时,LECommonLibrary/LEConfig.cs 会自动生成全局配置文件LEConfig.xml,并预置两个日语配置:Run in Japanese和Run in Japanese (Admin)——可见项目的"主场"就是日文环境。
每个配置项(Profile)的完整参数如下,都保存在 XML 里:
<Profile Name="日文游戏" MainMenu="false"> <Parameter>启动参数(可为空)</Parameter> <Location>ja-JP</Location> <Timezone>Tokyo Standard Time</Timezone> <RunAsAdmin>false</RunAsAdmin> <RedirectRegistry>true</RedirectRegistry> <IsAdvancedRedirection>false</IsAdvancedRedirection> <RunWithSuspend>false</RunWithSuspend> </Profile>几个要点:
MainMenu决定该配置是否直接出现在右键主菜单里,常用的配置建议勾上 ✅- 单个应用另有独立配置文件,就放在程序旁边,名为
<程序名>.exe.le.config,由右键菜单的"Modify Application Profile"创建 - 加载顺序:应用独立配置 → 全局配置中的第一项 → 内置的 ja-JP 默认值,三选一
打开管理界面有两条路:右键任意文件选择"Edit Global Profile List",或命令行执行LEProc.exe -global,都能进入 LEGUI 的配置窗口,选择区域(如ja-JP)、时区并保存即可。
实战场景:右键菜单之外的三种用法
场景一:以指定区域运行某个程序
- 操作:右键程序的
.exe,在 Locale Emulator 菜单下点选某个全局配置(或直接点"Run with Application Profile")。 - 结果:该程序按所选区域运行,文字、码页、注册表语言值全部按目标区域呈现,系统区域不变。
场景二:批量脚本化多语言测试
- 操作:LEProc 本身是命令行工具,用
-runas配合配置 Guid 指定环境,例如LEProc.exe -runas <配置Guid> "C:\app\test.exe";不带参数直接执行会弹出完整用法说明(按 Ctrl+C 可复制)。 - 结果:把命令写进脚本,就能并行拉起多个不同区域的实例,逐个比对界面表现,适合做兼容性回归。
场景三:需要参数或管理员权限的程序
- 操作:右键选"Modify Application Profile",打开该应用的独立配置页,填入
Parameter启动参数,勾选"Run as administrator"后保存。 - 结果:保存的同时会立刻以新配置启动程序,之后双击该
.le.config对应的"Run"入口都能带着参数、按管理员权限运行 ⚙️
警告:勾选"Create process with CREATE_SUSPENDED"是调试用途,进程会以挂起状态启动,没有窗口响应,可用 OllyDbg 附加,或用任务管理器结束它。
避坑指南:四个高频问题
右键菜单里没有 Locale Emulator?菜单来自 shell 扩展注册,不是文件缺失。重新运行LEInstaller安装一次,然后重启资源管理器(或电脑)再试。
弹出"core Dlls are missing"错误框?说明LoaderDll.dll、LocaleEmulator.dll不在构建目录或被安全软件清掉了。加白名单、重新复制 dll 再安装。
运行后依然乱码?先核对语言变体是否选对:zh-CN与zh-TW、ja-JP各不相同,码页和字符集跟着变;仍不行再勾选"Fake system UI language"(高级重定向),它会额外替换 UI 语言相关的注册表键值。
升级后菜单点了没反应?安装器的提示里写明:从旧版本升级需要重启电脑(或重启explorer.exe)来释放被锁定的组件 ⚠️
参与社区:翻译、Issue 与 PR
- 翻译:界面字符串集中在 LEGUI/Lang/DefaultLanguage.xaml 与 LEContextMenuHandler/Lang/DefaultLanguage.xml。仓库里已有 ca、cs、de、ja、ko、ru、zh-CN 等 20 余种语言文件,你可以对照补全自己的语言 📁
- 报告问题:提交 Issue,附系统版本、Locale Emulator 版本和复现步骤
- 提交代码:基于
LocaleEmulator.sln修改后提 Pull Request。代码采用 LGPL-3.0 许可,若想让改动不受 LGPL 约束,README 中建议先联系作者获取子许可
总结:现在就开始
- 不改系统区域、不重启,就能让单个程序运行在目标语言环境中
- 配置一次,长期复用:全局配置 + 每应用独立配置,优先级清晰
- 右键菜单与
LEProc.exe命令行双入口,日常操作和脚本化测试都覆盖 - 注册表虚拟化只作用于目标进程,系统注册表保持原样
- 完全免费、LGPL-3.0 开源,社区多语言维护中
行动清单:
- 克隆仓库,用 Visual Studio 打开
LocaleEmulator.sln完成构建 - 获取核心库,把两个 dll 放入构建目录
- 运行 LEInstaller 注册右键菜单,重启资源管理器验证
- 打开全局配置管理,把默认日语配置改成你真正需要的区域
- 右键一个目标程序,选中配置,完成第一次模拟运行
【免费下载链接】Locale-EmulatorYet Another System Region and Language Simulator项目地址: https://gitcode.com/gh_mirrors/lo/Locale-Emulator
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考