如何用 tiny11builder 四步做出 tiny11 国际版:多语言支持与区域设置
【免费下载链接】tiny11builderWinUI app for building smaller, customized Windows 11 images.项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder
用 tiny11builder 装出来的系统默认全是英文界面,日期按美式排、货币显示美元。做出 tiny11 国际版,关键就在两件事:多语言支持与区域设置,而且都要在制镜像阶段一次完成。
为什么要做国际版
- 显示语言和安装界面语言取决于镜像里装了什么语言包、autounattend 应答文件里写死了什么,默认镜像只有英文
- 区域格式(日期、时间、货币、计量)跟随 Locale 值,美式习惯在很多地区并不适用
- 默认 UI 语言存放在镜像的 MUI 注册表里,光装语言包不会自动切换过去
- 制作时统一配好,比装完系统后逐台手工配置稳定得多
改动集中在两个文件:tiny11maker.ps1 和 autounattend.xml。按下面顺序做即可。
第一步:tiny11 语言包安装的准备——.cab 文件从哪来、放哪
- 从微软官方的语言包下载页获取与你源 ISO同一 Windows 11 版本的语言包(.cab 文件),23H2 和 24H2 的语言包不通用
- 在脚本旁边建一个
LanguagePacks目录,把 .cab 放进去,文件名直接用语言标签,方便后面批量循环 - 目录结构参考:
LanguagePacks\ ├─ zh-CN.cab # 简体中文 ├─ ja-JP.cab # 日语 └─ ko-KR.cab # 韩语脚本会在第三步自动扫描这个目录,目录里放几个包就装几个。
第二步:在 autounattend.xml 里写 UI 语言与区域格式(windowsPE 阶段)
Windows 11 区域设置可以直接写进自动应答文件。打开 autounattend.xml,现有<settings pass="windowsPE">段落里只有Microsoft-Windows-Setup一个组件,需要再补一个Microsoft-Windows-International-Core-WinPE组件。
插入位置:现有</component>闭合标签之后(约第 35 行)、windowsPE 段落的</settings>之前(约第 36 行)。
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> <SetupUILanguage> <UILanguage>zh-CN</UILanguage> </SetupUILanguage> <InputLocale>0804:00000804</InputLocale> <SystemLocale>zh-CN</SystemLocale> <UILanguage>zh-CN</UILanguage> <UserLocale>zh-CN</UserLocale> </component>这五个节点分别管五件事:SetupUILanguage决定安装界面语言,InputLocale决定输入法(0804:00000804即简体中文拼音),SystemLocale与UserLocale决定区域格式。
⚠️SetupUILanguage填的语言必须是镜像里已实际安装语言包的,否则安装器会回退到其他可用语言。所以这一步和第三步要配套做。
脚本会把这份文件自动拷进镜像的 Sysprep 目录(tiny11maker.ps1 第 324 行)并拷到 ISO 根目录(第 440 行),所以只需改这一份,脚本不用动。
第三步:改构建脚本,把语言包装进镜像
tiny11 多语言支持的核心是 DISM 对挂载镜像的操作。脚本第 165 行把安装映像挂载到$ScratchDisk\scratchdir,第 167–175 行用dism /Get-Intl读出"Default system UI language",这一步只是查看当前默认语言。
真正写入要在挂载完成后进行。把下面这段插在第 196 行Write-Output "Mounting complete! Performing removal of applications..."之后(必须早于第 394 行的卸载保存):
Write-Output "Adding language packs..." Get-ChildItem "$PSScriptRoot\LanguagePacks\*.cab" | ForEach-Object { & dism /English "/Image:$($ScratchDisk)\scratchdir" /Add-Package "/PackagePath:$($_.FullName)" }这段循环扫描LanguagePacks目录,把每个 .cab 用dism /Add-Package装进挂载中的镜像。构建时想确认是否装进去了,可以补跑一次dism /English /Get-Intl "/Image:D:\scratchdir",看到语言列表里出现新标签即为成功。
注意:装包不会改变默认语言。想让安装后的系统直接使用该语言,用dism /English /Image:"D:\scratchdir" /Set-Intl /DefaultUILang:zh-CN一行即可,或者直接做第四步的注册表写法。
第四步:把默认语言与区域写进注册表
脚本第 282–286 行把挂载镜像的注册表单元加载为HKLM\zSYSTEM等前缀,第 288–363 行就是针对主映像的注册表配置区。把下面这段插在AllowUpgradesWithUnsupportedTPMOrCPU那行(第 297 行)之后的同一段落里:
Write-Output "Setting default language and region..." Set-RegistryValue 'HKLM\zSYSTEM\ControlSet001\Control\International' 'Locale' 'REG_SZ' '00000804' Set-RegistryValue 'HKLM\zSYSTEM\ControlSet001\Control\International' 'LocaleName' 'REG_SZ' 'zh-CN' Set-RegistryValue 'HKLM\zSYSTEM\ControlSet001\Control\MUI\Settings' 'PreferredUILanguages' 'REG_MULTI_SZ' 'zh-CN' Set-RegistryValue 'HKLM\zSYSTEM\ControlSet001\Control\MUI\Settings' 'InputLocale' 'REG_SZ' '0804:00000804'前两条设定区域格式:Locale是十六进制字符串(00000804即 zh-CN),LocaleName是语言标签;后两条设定首选 UI 语言与默认输入法。Set-RegistryValue是脚本第 43–56 行已经提供的reg add封装,直接调用即可,日志里会打印Set registry value: ...方便确认。
各目标语言的对照值:
| 目标语言 | Locale | LocaleName | InputLocale |
|---|---|---|---|
| 简体中文(中国) | 00000804 | zh-CN | 0804:00000804 |
| 英语(美国) | 00000409 | en-US | 0409:00000409 |
| 日语(日本) | 00000411 | ja-JP | 0411:00000411 |
| 韩语(韩国) | 00000412 | ko-KR | 0412:00000412 |
验证是否生效
用新 ISO 装一次机,按顺序核对:
- 安装界面与 OOBE 的界面语言已是目标语言(证明 autounattend.xml 的 windowsPE 配置生效)
- 首次登录后,"设置 → 时间和语言"里"Windows 显示语言"是目标语言
- "已安装的语言"列表中出现新加的语言包
- 日期按目标区域显示(如 2026年10月21日),货币符号正确
- 12/24 小时制与区域习惯一致
- (可选)管理员终端执行
reg query "HKLM\SYSTEM\ControlSet001\Control\International",LocaleName值正确
常见问题速查
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
dism /Add-Package报错,无法准备语言包(0x800f081f) | 语言包与镜像 build 版本不匹配 | 换用与源 ISO 相同 Windows 11 版本的包,23H2 / 24H2 不可互换 |
| 安装语言包时提示空间不足 | SCRATCH 临时盘剩余空间太小 | 换一块至少 30GB 空闲的盘做临时盘,重新运行脚本 |
| 安装器界面仍是英文 | 组件放错阶段,或镜像里没装该语言包 | 确认组件在 windowsPE 阶段内,且第三步已把对应 .cab 装进镜像 |
| 语言包装了,显示语言仍是英文 | 没改PreferredUILanguages | 补第四步注册表值,或改用dism /Set-Intl /DefaultUILang: |
| 日期、货币格式仍偏美式 | 只改了UILanguage,没改Locale | 按上表设置Control\International的Locale与LocaleName |
构建日志里看不到Set registry value: ... | 路径或值名拼写错误 | 对照Set-RegistryValue的调用参数逐字检查,脚本会自动打印错误信息 |
一次构建即可把语言与区域固化进镜像,产出的 ISO 可以直接交付给不同地区的用户使用。后续若要支持更多地区,可以给脚本加一个"选择语言包"的菜单,勾选后批量生成对应的国际版。
【免费下载链接】tiny11builderWinUI app for building smaller, customized Windows 11 images.项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考