用本地大模型给游戏做中文本地化:为开源翻译器 AiNiee 增加原生键-值型 TSV 读写支持(适配文本在松散文件里的游戏),并提供一套 XUnity.AutoTranslator 运行时翻译流水线(适配标准文本的 Unity 游戏)。两条路线都接同一个 OpenAI 兼容的本地模型后端。
本项目是一套游戏中文本地化工具集,把本地大模型接入两条经过实战验证的翻译路线:
-
路线 A · 文件型游戏 → AiNiee(已加 TSV 支持) 给 AiNiee 增加了原生键-值型 TSV 读写器:自动识别
.tsv,只翻第一个制表符之后的文本列,键列、[占位符]、字面量\n、整体结构原样保留,输出 UTF-8 无 BOM。已完整汉化 R.E.P.O.(HUD/Menu/Game共 603 行)。 -
路线 B · Unity 游戏 → XUnity.AutoTranslator(运行时翻译) 对用标准文本组件渲染文字的 Unity 游戏,在运行时拦截文本并翻译;通过适配器
xuat_llm_shim.py把 XUAT 的CustomTranslate协议桥接到本地模型。
在动手翻译前,先确认游戏是否已有官方中文(看 Steam 商店页语言列表)。大量 3A 大作自带官方简中,直接切语言即可。
打包好的 Windows 版可直接下载,无需自行构建:
- 到 Releases 下载
AiNiee_TSV_v1.0_win64.zip - 解压后运行
AiNiee/AiNiee.exe(已内置原生 TSV 支持) - 在「接口设置」里配置 OpenAI 兼容的模型后端,即可开始翻译
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10 / 11 |
| Python | 3.12(从源码运行 / 打包用;用打包版则不需要) |
| 翻译后端 | 任意 OpenAI 兼容接口(本地大模型 / 在线 API 均可) |
| 路线 B 额外 | BepInEx 5(新 Unity)或 ReiPatcher(老 Unity,.NET 3.5) |
- 用打包版:按上面「下载使用」运行
AiNiee.exe即可(TSV 支持已内置)。 - 从源码:进入
AiNiee-main/AiNiee-main/,装依赖后python AiNiee.py;或python Tools/pyinstall.py打包成 exe(已配置打包Resource/与 TSV 模块)。 - 配好 OpenAI 兼容后端,把游戏的
.tsv目录设为输入开始翻译,译文结构与占位符自动保留。
- 选加载器:查
*_Data/Managed/mscorlib.dll的 .NET 版本——v2.0.50727(老 Mono,如 Unity 5.3.x)用 ReiPatcher;v4.0.30319(.NET 4.x)用 BepInEx 5。 - 接本地模型:运行
python AiNiee_TSV/xuat_llm_shim.py 4404,并在 XUAT 配置里设Endpoint=CustomTranslate、Url=http://127.0.0.1:4404/translate,Language=zh-Hans、FromLanguage=en、OverrideFont=Microsoft YaHei。 - 启动游戏:文本在运行时按需翻译。
完整步骤、踩坑与判断流程见 AiNiee_TSV/游戏翻译工具链_playbook.md。
game_translate/
├─ README.md
├─ AiNiee-main/AiNiee-main/ # AiNiee 主程序源码(已集成 TSV 支持)
│ ├─ ModuleFolders/Domain/FileReader/TsvReader.py # 新增:键-值型 TSV 读取器
│ ├─ ModuleFolders/Domain/FileOutputer/TsvWriter.py # 新增:键-值型 TSV 写入器
│ ├─ ModuleFolders/Service/Cache/CacheProject.py # 注册 ProjectType.TSV
│ ├─ Tools/pyinstall.py # 打包脚本(已修复:打包 Resource 目录)
│ └─ … # 其余为上游 AiNiee 源码
├─ AiNiee_TSV/ # 配套工具链
│ ├─ 游戏翻译工具链_playbook.md # 完整工具链手册 + 新游戏判断流程
│ ├─ xuat_llm_shim.py # XUAT CustomTranslate -> 本地模型 适配器
│ └─ REPO_translated/ # R.E.P.O. 译文成果(Game/HUD/Menu.tsv)
└─ detect_game_engine.py # 引擎检测小工具
不含 Python 虚拟环境与打包产物(
dist/build/AiNiee.exe)——打包好的 Windows 版见 Releases,或用Tools/pyinstall.py自行构建。
| 文本存储形式 | 走哪条路 | 能否翻译 |
|---|---|---|
| 松散文本文件(tsv/csv/json/po…) | A:AiNiee | ✅ |
| Unity,标准文本组件渲染 | B:XUAT | ✅ |
| 文字是图片/纹理(像素美术报纸、标题 logo) | — | ❌ 任何工具都翻不了(除非手工重绘) |
| 自绘字体 / 逐字打字机系统、每帧用原文重绘 | — | ❌ 能读取翻译但显示不出 |
| 已有官方中文 | 直接切语言 | ✅ 无需工具 |
Python 3.12 · AiNiee(TSV 扩展)· XUnity.AutoTranslator · BepInEx / ReiPatcher · OpenAI 兼容本地模型后端 · PyInstaller。
| 问题 | 处理 |
|---|---|
AiNiee 把占位符 [xxx] 也翻了 |
在禁翻表加正则 \[[a-z][a-z0-9]*\] |
| 输出 TSV 带了 BOM | 本 TSV 写入器强制 UTF-8 无 BOM;勿用 CsvWriter |
| 自己打包后 exe 启动闪退 | 确认 Tools/pyinstall.py 打包了 Resource/(本仓库已修复) |
| XUAT 在老 Unity 上崩溃 | 别用 BepInEx 运行时注入,改用 ReiPatcher 静态补丁 |
| 游戏里中文显示成方块 | 设 OverrideFont=Microsoft YaHei |
- AiNiee —— 多格式 AI 翻译器,本项目在其基础上扩展了 TSV 支持。
- XUnity.AutoTranslator 与 BepInEx —— Unity 运行时翻译方案。
本仓库新增的工具与补丁以 MIT 提供;上游 AiNiee、XUnity.AutoTranslator、BepInEx 等各自遵循其原始许可证。