☰
Locale Emulator 区域模拟器实操指南:不改系统区域运行日文与繁中程序
2026/11/4 1:56:11 网站建设 项目流程

Locale Emulator 区域模拟器实操指南:不改系统区域运行日文与繁中程序

【免费下载链接】Locale-EmulatorYet Another System Region and Language Simulator项目地址: https://gitcode.com/gh_mirrors/lo/Locale-Emulator

假设你下载的游戏是日文版、常用的某个工具是繁体中文版,而 Windows 本身是简体中文。不改系统设置,程序界面会回退成英文甚至乱码;走系统自带的"区域和语言"修改路径,则意味着全盘程序的语言环境都被改动,还要重启。Locale Emulator(区域模拟器,Region and Language Simulator)的做法是把模拟范围收敛到单个进程:只为它要启动的那个程序伪造一套区域环境,系统本身保持原样。下文先讲它的工作方式,再给出从安装到验证的最小路径,以及三种日常用法。

它解决什么问题:按进程模拟语言环境,而不是全局修改

传统方法只有两种,各有代价:

  • 改系统区域:把系统从 zh-CN 切到 ja-JP 或 zh-TW。影响的是机器上所有程序,日期、货币、排序、字体行为全部跟着变,改完通常要重启,用完还得改回来。
  • 什么都不改:只靠单个程序的设置(如果它有的话),多数老程序没有这种选项。

Locale Emulator 提供的是第三种:每个"配置"(profile)里记录一组区域参数——目标区域Location(如ja-JP)、时区Timezone(如Tokyo Standard Time)、是否以管理员运行、是否重定向注册表项等。启动目标程序时只加载对应 profile,其他程序完全无感。适合"偶尔要跑几个特定语言的程序,但不想动系统"的场景。

原理简述:加载器替系统"造"一个进程级环境

这个仓库是 C# 上层部分,核心加载逻辑在独立仓库Locale-Emulator-Core中,以LoaderDll.dll和LocaleEmulator.dll两个 DLL 随发布包分发。LEProc启动时的流程大致是:

  1. 从配置中取出 profile,换算出 LCID、ANSI/OEM 代码页、默认字符集等参数(对应 LEProc/Program.cs 中GetCharsetFromANSICodepage等方法)。
  2. 若启用了注册表重定向,则构造一份REGISTRY_REDIRECTION_ENTRY64条目列表(LEProc/LERegistryRedirector.cs),覆盖HKCR、HKCU、HKLM等根下与语言相关的键值。
  3. 把这些参数交给核心加载器创建目标进程:通过NtCreateProcessEx这一底层建进程接口传入注册表重定向条目,目标进程内部读到的语言相关注册表值就是模拟值;高级重定向模式下加载器还会对 UI 语言查询 API 做 hook(HookUILanguageAPI参数)。

因为这一切只发生在被启动的那个进程内部,所以不需要改系统设置、不需要重启,系统任务栏、输入法和其他程序都维持原状。代价是:它模拟的是"程序能读到的语言信息",不会替你安装字体或语言包,系统缺中日韩字体时界面依然可能是方块。

动手用起来:安装、首启与一个验证实验

获取与安装

  • 日常使用建议直接下载官方发布的安装包(README 指向项目 Releases,中文说明见项目文档站,以仓库 README.md 中的链接为准)。
  • 从源码构建:git clone https://gitcode.com/gh_mirrors/lo/Locale-Emulator,需要 Visual Studio 2015/2017 打开LocaleEmulator.sln构建,并额外构建Locale-Emulator-Core后把LoaderDll.dll、LocaleEmulator.dll拷进输出目录,详见 README 的 Build 一节。
  • 运行安装包中的LEInstaller.exe(LEInstaller/),可按提示选择为当前用户或所有用户安装,全用户安装需要管理员权限。

首次启动LEProc.exe时会自动在程序目录生成全局配置文件LEConfig.xml,默认包含两个 profile:Run in Japanese和Run in Japanese (Admin),区域均为ja-JP、时区Tokyo Standard Time(逻辑见 LECommonLibrary/LEConfig.cs)。配置结构大致如下:

<LEConfig> <Profiles> <Profile Name="Run in Japanese" Guid="..." 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> </Profiles> </LEConfig>

第一次运行与验证实验

  1. 运行LEGUI.exe(LEGUI/,WPF 配置界面)确认能看到 profile 列表,并可修改Location、Timezone、启动参数等。
  2. 找一台日文测试程序(没有的话,任何带 UI 的外文程序都行),右键该.exe→ 选择 Locale Emulator 菜单项(如 "Run in Japanese")→ 程序正常启动。
  3. 打开系统"区域"设置确认仍是 zh-CN——启动成功且系统区域未变,即代表模拟链路工作正常。

菜单项由LEContextMenuHandler.dll提供(LEContextMenuHandler/),它作为一个 COM 外壳扩展在右键菜单中注入条目,注册逻辑在 LEInstaller/ShellExtensionManager.cs。

常用做法:右键菜单、命令行、按应用配置

右键菜单

日常最高频的路径:右键.exe→ Locale Emulator → 选一个 profile。菜单中会同时出现全局 profile 和该应用自己的 profile。注意LEProc对非.exe文件走的是文件关联查询(AssociationReader),所以双击脚本类文件时实际启动的是其关联程序。

命令行:LEProc.exe

LEProc.exe不带参数运行会打印完整用法(见 LEProc/Program.cs),常用形态:

LEProc.exe <path> 按"应用自身 profile > 首个全局 profile > 默认 ja-JP"顺序启动 LEProc.exe -run <path> [args] 强制使用应用自身 profile(无该配置时打开 LEGUI 创建) LEProc.exe -runas <guid> <path> [args] 用指定 Guid 的全局 profile 启动 LEProc.exe -manage <path> 打开 LEGUI 编辑该应用的配置 LEProc.exe -global 打开全局 profile 管理器

其中<guid>取自LEConfig.xml中<Profile Guid="...">属性。批量场景下可以把这些命令写进.bat,一次拉起多个程序。

按应用的独立配置

每个应用可以拥有独立配置文件,命名规则是"完整路径 +.le.config",例如D:\Games\demo.exe对应D:\Games\demo.exe.le.config。在LEGUI里为该应用保存配置后会自动生成此文件;之后右键菜单和LEProc.exe <path>都会优先读取它。多个游戏各自不同区域、同一批办公应用共享一套 profile 时,这套机制比反复改全局配置省事。

边界与限制:它模拟不到什么

  • 不安装字体和语言包:它改写的是程序读到的 LCID、代码页、UI 语言与部分注册表值。系统里根本没有对应字体时,界面仍会缺字。
  • 不改变系统级组件:输入法、任务栏语言、系统通知的语言不受影响;被模拟的只是目标进程视角。
  • 面向.exe与文件关联:LEProc通过路径启动可执行文件或查文件关联,不适用于 UWP/Store 应用这类非.exe场景。
  • 依赖第三方加载器建进程:带反篡改、DRM 保护的程序可能拒绝被这种方式启动,遇到失败先怀疑兼容性而非配置错误。
  • 替代方案对比:Windows 11 已提供按应用设置显示语言(App locale)的能力,覆盖面和可用性随系统版本变化,简单场景可先用系统自带功能;要把整台机器切成另一种区域,改系统设置反而更直接。Locale Emulator 的定位介于两者之间:只针对特定 Win32 程序做进程级模拟。

排错速查:三个高频问题

症状可能原因处理
启动时弹窗提示 "Some of the core Dlls are missing"(缺LoaderDll.dll/LocaleEmulator.dll)杀毒软件把核心 DLL 隔离按弹窗提示把这两个 DLL 加入白名单,重新下载并安装 LE(提示文案见 LEProc/Program.cs)
安装后右键 .exe 没有 Locale Emulator 菜单外壳扩展未注册或 Explorer 未刷新以管理员身份重新运行LEInstaller.exe完成注册(LEInstaller/ShellExtensionManager.cs),或重启explorer.exe
程序启动了但界面语言没变profile 的Location与期望不符,或程序依赖 UI 语言 API/注册表取值打开 LEGUI 核对Location;确认RedirectRegistry为 True,必要时勾选高级重定向(启用 UI 语言 API hook);部分程序需管理员权限,改用带 Admin 的 profile——LEProc检测到提权需要时会自动走 UAC

另外:LEProc会在启动时顺带调度LEUpdater.exe schedule(LEUpdater/ 负责检查更新),如不需要自动更新可留意安装选项。

下一步建议

如果你的需求固定(比如长期玩某个日文游戏),建议现在就为它做两件事:用-manage或右键"管理配置"给它建一个独立 profile(ja-JP+Tokyo Standard Time),保存为应用自身的.le.config;再确认系统已安装中日韩字体。想深入或参与改进,可以从 LEGUI/Lang/ 与 LEContextMenuHandler/Lang/ 的翻译文件入手,README 中说明项目接受翻译贡献;源码构建时注意核心加载库来自独立的Locale-Emulator-Core仓库。

【免费下载链接】Locale-EmulatorYet Another System Region and Language Simulator项目地址: https://gitcode.com/gh_mirrors/lo/Locale-Emulator

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询