没有和上一篇放在一起是感觉这个好像不太属于二刺螈游戏了?(并非)
不过其实这次做的是个UE5的小游戏,还是个Debug版打包直接端上来的,性能巨差(不过也多亏了Debug版打包,可以不怎么费事的提取usmap,也给了AI大人分析的空间,虽然最后其实没用上)
注意本文应该只能覆盖相当少的情况,可以当图一乐看。省流看这个项目:TranslationScripts/GameEngineTool/UE5Zen at main · Tabing010102/TranslationScripts
下面是过程(所有提到的工具都在参考中):
首先AI搜一下UE游戏有哪些本地化方式,发现locres文件有现成的工具可以用(UE4EasyLocalizationTool之类的,而且您猜怎么着,这玩意支持4.27/5.2/5.4-5.7,恰好不支持5.3),然后用FModel打开游戏文件夹,找了半天没发现有locres文件,但是发现有些很像文本的东西,但是打不开,报错“Package has unversioned properties but mapping file (.usmap) is missing”,如下图:

链接是一个GitHub Discussion:github.com/4sval/FModel/discussions/418
于是就看了下,先从jmap入手,然而无论从release下载,还是源码编译均报错:


Dumper-7看起来还需要改代码,于是目光就到了RE-UE4SS身上,然而我用了最新Release(3.0.1)的标准和zDEV包,均不能正常使用,报错如下:
[2026-05-09 16:43:47] PS Scan attempt 15
[2026-05-09 16:43:47] [PS] Reading image
[2026-05-09 16:43:47] [PS] Starting scan
[2026-05-09 16:43:47] [PS] Scan finished in 590.3025ms
[2026-05-09 16:43:47] [PS] Found EngineVersion: 5.3
[2026-05-09 16:43:47] [PS] Found GUObjectArray: 0x7ff7dbf87d50
[2026-05-09 16:43:47] [PS] Failed to find GMalloc: iter returned multiple unique values
[2026-05-09 16:43:47] [PS] You can supply your own AOB in 'UE4SS_Signatures/GMalloc.lua'
[2026-05-09 16:43:47] [PS] Found FName::ToString: 0x7ff7ce67ebf0
[2026-05-09 16:43:47] [PS] Found FName::FName(wchar_t*): 0x7ff7ce648690
[2026-05-09 16:43:47] [PS] Found StaticConstructObject_Internal: 0x7ff7cedef550
[2026-05-09 16:43:47] [PS] Found FText::FText(FString&&): 0x7ff7ce322630
[2026-05-09 16:43:47] [PS] Scan failed
对于GMalloc错误还发现了一个issue:How do I get GMalloc using x64dbg? · Issue #665 · UE4SS-RE/RE-UE4SS,看到x64dbg直接昏迷,于是让AI大人用pdb按照教程给的思路操作,最后拉了一个GMalloc.lua,然而还是失败(直接崩溃产生crashdmp)
function Register()
return "48 85 C9 0F 84 ?? ?? ?? ?? 56 48 83 EC 30 80 3D ?? ?? ?? ?? 00 48 8B F1 75"
end
function OnMatchFound(MatchAddress)
local MovInstr = MatchAddress + 0x45
local Offset = DerefToInt32(MovInstr + 0x3)
local RIP = MovInstr + 0x7
local GMallocAddress = RIP + Offset
return GMallocAddress
end
AI大人在狂看dmp和汇编,一顿操作猛如虎,结果还是没解决。最后用了experimental-latest的zDEV包,修改UE4SS-settings.ini的DebugBuild就好了,后面正常Ctrl+NumPad6,或者在GUI上Dump usmap都可以,最后在ue4ss文件夹里



有了usmap文件后,就可以导入到FModel中解析了,可以看到主要文本都在[GameName]/Content/Data/Dialogs下面,全是DataTable

然后就交给AI大人操作了,直接开始vibe
结果一顿操作到最后从提取的json文件转换回uasset跑不通(看起来FModel是单向从uasset->json,不能反向转换),看起来是需要JsonAsAsset这个玩意(UE的插件),加上相同版本的UE引擎,看起来好麻烦
然后就继续翻,发现ZenTools可能支持,然后又顺着ZenTools找到了retoc
然后就没了,一顿vibe就有了开头省流的项目(TranslationScripts/GameEngineTool/UE5Zen),简单来说就是提取usmap->retoc解包->提取文本->翻译->应用翻译->封回uasset->做补丁包([origin_name]_P.pak/ucas/utoc),然后把带“_P”的包放到原始位置就行
因为笔者需要修改的游戏使用的字体显示简体中文没有问题,所以没有涉及字体更换等,以及笔者懒比,没有汉化按钮的图片
(我是xhigh大人的√)
参考:
4sval/FModel: Unreal Engine Archives Explorer
trumank/retoc: Unreal Engine IoStore CLI packing/unpacking tool
atenfyr/UAssetAPI: A low-level .NET library for reading and writing Unreal Engine game assets.
最后没用到的
amrshaheen61/UE4LocalizationsTool: simple tool to edit unreal engine 4 text files
JsonAsAsset/JsonAsAsset: Powerful Unreal Engine Plugin that imports assets from FModel
Archengius/ZenTools: DEPRECATED: Use https://github.com/trumank/retoc instead
Views: 0