❖ 前言

本人是纯文科生,编程基础约等于0,所以汉化出来的游戏都没有太大的难度。
写这篇文章是希望为同样没有编程基础的同好们提供我个人的经验,
很多游戏的汉化流程都大同小异,
希望能为同好们迈出汉化的第一步提供一些方向。

请注意:
不论有多粗略,请务必进行二次校对,至少对术语进行统一,不要折磨你的同好。
回旋镖来了,先用KeywordGacha生成术语表再翻译的话,除了程序问题也没啥需要特意改的了,开摆!
不过翻译前记得检查一遍术语表。

同时注意标注为AI汉化/机翻汉化。

解包、未授权的汉化都是侵权行为。
本文仅供学习交流,如有需要请发邮件至flamecho@qq.com,在一封邮件内详细描述问题。
在文章下方评论也可以。
如果有过于简略看不懂的地方也可以发邮件或者B站私信,会抽时间做图文教程。
这个教程里没什么图纯是因为懒得搞的,都不知道有无人看


❖ 关于本文

本文以游戏引擎为划分,对游戏汉化中所使用的工具及参考的教程进行列出,请自行下载及查阅。
汉化过程会写的很简略,如有不能理解的地方,请查阅文中提供的教程链接。
如有需要请随意把我做的汉化补丁拆了作参考,点击即可下载。

所有蓝色的字都是链接。


❖ 省钱方法

虽然Deepseek-V3翻译一部长篇也就十几块钱,但能省为什么不省呢?
事先声明一下我不是带货的

火山方舟等平台注册都有给免费额度,但长期来看肯定是不够用的。
硅基流动注册给14块钱的免费余额,能以apikey的形式分发给其他人使用。
由于注册相较其他平台门槛更低,在闲鱼上有很多低价apikey卖,大概5毛钱就可以买到14块钱的apikey。
但是这个apikey由于是免费版,限制了很低的rpm和tpm,即每分钟能翻译的句子很少,限制了翻译速度。

所以直接买十几个apikey一起均衡负载,翻译速度就上来了。天才!
LinguaGacha、KeywordGacha接口管理-硅基流动-编辑接口-接口密钥输入多个apikey。

经测试,在14个apikey同时使用的情况下,推荐设置如下:

工具每分钟任务数量阈值任务长度阈值
LinguaGacha90384
KeywordGacha402048
根据所使用的apikey的数量进行对应调整。

❖ 工具下载

以下为本文中使用的部分工具:

工具引擎用途
GARbro-Mod-1.0.1.2.rar通用解包
VNTranslationTools.rar通用文本处理
Translator++通用翻译器
AiNiee通用翻译器
LunaTranslator通用翻译器
Luna翻译模板通用文本处理
SQLiteStudio通用数据库编辑器
LinguaGacha通用翻译器
KeywordGacha通用术语表生成器
xp3_upk.exe(密码di6k)Kirikiri解包封包
THE NVL Maker.rarKirikiri工具包
rpaExtract.exe(密码af1q)Ren’Py解包
WinAsar.exe(密码5vt6)TyranoScript解包
dirOpener300-850-1-PC.zipMacromedia Director格式转换
DirectorCastRipper_D10.zipMacromedia Director解包
DirectorCastRipper_D12.zipMacromedia Director解包
Light.vnToolsLight.vn解包封包
NS 296 1.04.GBK.exe(密码1u8f)NScripter汉化启动程序
NSDEC.rarNScripter解包
nsaout.rarNScripter解包
脚本打包.exe(密码fhwe)NScripter封包
资源封装NSA.exe(密码:d5dy)NScripter封包
YPF Manager ToolYU-RIS解包封包
ToolForYurisYU-RIS解包封包

❖ LunaTranslator

这是一种泛用的汉化方式。
对于程序苦手的人来说,推荐优先使用这种汉化方式。
但相对来说翻译过程比较折磨。
Luna翻译器基本教程:点击跳转

思路历程

尝试了一个月,做了四个游戏的汉化,有外挂的(弥赛亚、月蚀狂想、奥兹国),也有内嵌的(断罪玛丽亚,还在玩),算是敲定了我觉得可行的汉化方案。
在将其应用于NS版月影之锁 错乱偏执狂的汉化时,我觉得效果不错,所以在这里记录。

诚然,这是在难以解包封包的情况下的一种不太方便的方案,但优势也很明确:
◆ 避免了对于版本更迭较频繁的游戏的反复适配,因为不动代码
◆ 可应用于多平台的游戏,因为通常文本不会有特别大的变化
◆ 不会被某些人整合并挂上自己的名字


在汉化【弥赛亚、月蚀狂想】时,我的方案是在游玩过程中,使用翻译器自带的【编辑翻译记录】功能进行校对,并同步丰富术语表。
弊端是这个编辑翻译记录的框挡屏幕,而为了翻译文本能同步到框里,又不得不一直开着它,游玩体验很差。
并且游玩时要等待文本翻译,可能我日语都读完了它还没翻译完,违背我做汉化是为了快点打游戏的初衷。

在汉化【奥兹国、断罪玛利亚】时,我的方案是游戏开自动模式,把整个游戏跑一遍,然后再玩。
解决了需要等待翻译的问题,但弊端也很明显:
术语表不全,且不能联系上下文,翻译质量不太行。


我觉得一定有什么办法能让我在这个方案中使用到AiNiee或LinguaGacha,所以我去LunaTranslator的github翻issue,看到有人问怎么只提取原文,因为他也想放到AiNiee里去翻译。
虽然他没说他想怎么拿AiNiee翻译,但我突然就想通了,于是有了接下来的方案。

提取文本

这里分两种情况,决定了你提取文本的效率:该游戏是否可以内嵌翻译。
内嵌翻译是Hook方法专属,对于不能Hook的游戏,我建议先去LunaTranslator的github提适配请求的issue,如果做不到再考虑OCR。
当你使用OCR方法提取文本时,请参考下文【非内嵌翻译】的部分。示意图


【内嵌翻译】

你可能会说【我不想使用内嵌翻译的功能,因为字体经常有粗有细我不喜欢】,大可以放下心来,通过内嵌来提取文本并不会影响你之后不内嵌玩游戏,你只需要提取文本时在【选择文本】中勾选【内嵌】,而玩游戏的时候勾选【显示】。

关于内嵌翻译,请查看官方文档:点击跳转

当游戏可以进行内嵌翻译时,意味着即使快进,游戏文本也不会合在一起,而是每句话自成一行。
如果你曾经使用过非内嵌翻译,就会明白我在说什么:非内嵌翻译的情况下,当你快进或者文本点快了,几句话会连在一起并进行翻译,相当抽象。

所以对于可以内嵌翻译的游戏,你需要在【翻译设置】中关闭所有接口,同时打开【自动翻译】(在工具栏上显示为⏩)和【显示原文】(在工具栏上显示为👁️),进游戏点两下确保能且仅能提取到原文文本后,游戏内开启【强制未读快进】或使用全开存档,拿着攻略把整个游戏快进,快速过一遍。

文本全部提取到之后,在【翻译设置】-【其他】-【导出翻译记录为json文件】中,选择【translation_record】中的sqlite文件,在这个文件夹中会生成json文件。


【非内嵌翻译】

与内嵌翻译的差别是,你需要每句话给翻译器留一两秒的提取文本的时间,不然就会几句话合在一起。

首先仍然是需要在【翻译设置】中关闭所有接口,同时打开【自动翻译】(在工具栏上显示为⏩)和【显示原文】(在工具栏上显示为👁️),进游戏点两下确保能且仅能提取到原文文本。
然后游戏内把文本显示速度和自动模式速度适当调高,可以的话把角色语音都关了以防一句话被语音硬控十几秒,然后开自动模式,把整个游戏过一遍。
不建议使用连点器,点快了文本会连在一起。

文本全部提取到之后,在【翻译设置】-【其他】-【导出翻译记录为json文件】中,选择【translation_record】中的sqlite文件,在这个文件夹中会生成json文件。

AI翻译

在文本编辑器(推荐notepad++)中打开json文件。
luna-1.png删除"及其前面的空格直至顶格,删除": "",
保证每行只有一句原文,不包含其他符号。
luna-2.png新建一个xlsx表格,将所有原文复制到xlsx第一列。

如果粘贴时出现分成两列的情况,参考以下步骤:
1.选中一个带有值的单元格。(即非空的单元格)
2.选择数据> 分列,选择分隔符号。
3.去掉所有分隔符号前面的勾。
4.点击完成。 然后粘贴数据。

在最上面插入一行。
第一行A1填写Original Text,B1填写Initial,
然后可以使用Ainiee或LinguaGacha翻译,格式选择T++导出文本。
(Ainiee和LinguaGacha具体教程见其他章节)
luna-3.png在使用Ainiee或LinguaGacha翻译之前,可以用KeywordGacha生成术语表以提高翻译质量。
(KeywordGacha具体教程见Kirikiri章节的Collision×Collision)
翻译后得到这样的xlsx文件。luna-4.png

制作补丁

补丁指sqlite翻译记录,将翻译文本导入sqlite文件之后,就可以借助luna翻译器的预翻译功能来游玩游戏。


打开ainiee或LinguaGacha导出的译文xlsx,把原文那列和第一行都删了,只留译文。luna-5.png我做了一个模板来调整译文的格式,以便于导入sqlite文件。luna翻译模板https://download.flamecho.top/files/68582e379ed73/luna翻译模板.7z解压密码youtiaojianqingzhichizhengban←有条件请支持正版的小写全拼

打开luna翻译模板,把译文复制粘贴到B列,在D列会自动生成符合格式的文本,复制待用。luna-6.png


在【提取文本】那步,我们得到了仅原文的sqlite文件,使用数据库编辑器来打开。
这里我使用的编辑器是SQLiteStudio
这个软件在第一次进入时可以选中文,记得选。

左上角【数据库】-【添加数据库】,选择sqlite文件。luna-7.png【工具】-【打开配置对话框】-【浏览数据】,将【每页数据行数】设置为10000。(按需设置)

将luna翻译模板中复制待用的D列文本粘贴到【machineTrans】这列。(ctrl+c复制,ctrl+v粘贴)
如果文本行数过多则需要分多次粘贴,上一步设置行数为10000是因为多了电脑会卡。未响应的话等待即可。luna-8.png粘贴完点击上面有个绿色的√按钮(提交)。

在【筛选数据】中搜索{"rengong": ""},查找为空的译文,将原文按格式填进去。
会出现这个空行是因为ainiee在原文译文一致的情况下,在译文那列会显示为空。
当你玩游戏的时候,如果sqlite中这列文本为空,游戏就会卡住。
如果为空的译文较多,为了提升效率,
你可以将筛选后的【source】列复制到luna翻译模板里再粘贴回【machineTrans】列。


至此sqlite文件的修改就完成了,你可以在luna翻译器中【翻译】-【其他】选择【sqlite预翻译】。
在游玩过程中如有校对需求,可直接在SQLiteStudio中对sqlite文件进行修改,重启luna翻译器后生效。

校对

一般直接在【machineTrans】那列直接修改译文即可。


【批量替换】

【工具】-【打开SQL编辑器】

粘贴到查询那个框里
1
2
UPDATE artificialtrans
SET machineTrans = REPLACE(machineTrans, '旧文本', '新文本');
然后按F9或在工具栏按钮【执行语句】。

❖ Kirikiri

简称krkr。
包括krkr、krkr2、krkrz这三个版本,汉化方式一致,特征为文件后缀为xp3。

大秽前篇(使用VNTranslationTools和AiNiee)

引擎为KrkrZ。

【解包】
使用xp3_upk,将data.xp3拖到xp3_upk.exe上,在同目录出现名为data的文件夹即为游戏文件。
xp3_upk.exe(密码di6k)


【提取文本】
大秽的文本在data\scenario。
使用Translator++会出现汉化文本导入不全的问题,因此使用VNTranslationTools。
VNTranslationTools.rar
使用方式参考B站@五娼会会长:Krkrz游戏汉化全流程中的第五步,提取出json格式的文本。


【汉化】
使用AiNiee对文本进行AI翻译。
AiNiee:一款专注于Ai翻译的工具
翻译设置选择【VNText导出文件】,使用方式参考B站@TJJtjj:用AiNiee+ChatGPT翻译renpy游戏中的AiNiee设置部分。
翻译完用VNTranslationTools将json格式的翻译文本改为ks格式的剧本文件。


【制作补丁】
如有署名需求,游戏标题的修改位置:data\system\Config.tjs
;System.title = “游戏标题”;

有两种汉化发布方式。
1.新建一个名为patch的文件夹,将所有修改后的文件放进去(文件夹中不要有其他文件夹,所有文件都是直接放在patch文件夹内),将patch文件夹拖到xp3_upk上,同目录生成patch.xp3。
分发patch.xp3即可。
2.如要将汉化补丁封包入exe中,使用Enigma Virtual Box。
Enigma Virtual Box官网:下载Enigma文件打包工具
上方language修改软件语言为中文,选择【待封包的主程】和【封包程序另存】后,点一下下方【Virtual Box Files】的字样,将patch文件夹拖到下方一片空白的地方,选【%DEFAULT FOLDER%】,最后选【执行封包】。
分发修改后的exe即可。

Cocoon(使用Translator++和Ainiee)

引擎为Krkr。

【解包】
资源文件被封装进了exe中,无法使用xp3_upk解包,因此使用GARbro对exe进行解包。
使用方法请看本文【YU-RIS】章节的【未成之缘 なりそこないのよすが】的解包部分。
解密方法选【海と雪のシアンブルー】。


【汉化-1】
使用Translator++和Ainiee进行文本提取和翻译。
流程可以参考B站@TJJtjj:用AiNiee+ChatGPT翻译renpy游戏,最开始选【Kirikiri Adventure Game】。
做到把翻译好的游戏文件导出到文件夹那一步就可以了。


【汉化-2】
但这种方式有个问题:人名并没有被提取出来。
所以在将翻译好的游戏文件导出到文件夹之后,要对游戏文本中的人名部分进行进一步的修改。
使用notepad++来进行同一文件夹内所有文本的批量替换。
CSDN@° 安如少年初如梦662:最新版Notepad++ 下载与安装教程
百度经验@书香驿站:用Notepad++批量修改替换多个文件内容
krkr的人名表示方法:[名前 n=”名字”]


【制作补丁】
这个游戏已经发布了两个补丁(patch1.xp3、patch2.xp3),
而krkr的补丁读取顺序是【如果多个补丁中存在相同名字的文件,则优先读取数字更大的补丁中的该文件】。

因此与大秽略不同的、该游戏补丁的制作方式为:
新建一个名为patch3的文件夹,将所有修改后的文件放进去(文件夹中不要有其他文件夹,所有文件都是直接放在patch3文件夹内),将patch3文件夹拖到xp3_upk上,同目录生成patch3.xp3。
分发patch3.xp3即可。
xp3_upk.exe(密码di6k)

Cocoon -Black Noise-(使用Translator++和Ainiee)

引擎为Krkr。

【解包】
使用xp3_upk,将data.xp3拖到xp3_upk.exe上,在同目录出现名为data的文件夹即为游戏文件。
xp3_upk.exe(密码di6k)


【汉化】
使用Translator++和Ainiee进行文本提取和翻译。
流程可以参考B站@TJJtjj:用AiNiee+ChatGPT翻译renpy游戏,最开始选【Kirikiri Adventure Game】。
做到把翻译好的游戏文件导出到文件夹那一步就可以了。


【制作补丁】
如有修改游戏标题的需求,需修改data\system\Config.tjs第17行System.title。
此文件如果打开来是乱码,请使用notepad++或任意编辑器修改编码为UTF-16LE。
如果修改后游戏报错,则在修改标题时不要使用简体中文。

新建一个名为patch的文件夹,将所有修改后的文件放进去(文件夹中不要有其他文件夹,所有文件都是直接放在patch文件夹内),将patch文件夹拖到xp3_upk上,同目录生成patch.xp3。
分发patch.xp3即可。

Collision×Collision(使用Translator++和LinguaGacha和KeywordGacha)

翻译大秽完全版时也是这个方案,但是当时没记录,所以换个游戏来过一遍翻译流程。

ainiee可做双语补丁,LinguaGacha(下称灵瓜)可术语表纠错,两者各有千秋。
我倾向于短篇&省钱&省事&有双语等特殊需求用ainiee,长篇术语多&token多则用灵瓜。
因为KeywordGacha生成术语表的速度真是非同一般的慢且消耗token,而让它边翻译边补充术语表又会出现很搞笑且挽回费劲的错误。
但实际上KeywordGacha导出的术语表也可以照着填到ainiee的术语表里去,所以灵瓜现在优势个人觉得还是在于代码处理和修改术语表后的重新翻译功能。

工具版本:
LinguaGacha v0.25.11
KeywordGacha v0.14.0

2025.6.17补充:
KeywordGacha更新到v0.20.2了,有了图形化界面,操作挺简单易懂的,就不补充了。


【使用KeywordGacha生成术语表】

1.打开Translator++,创建新工程。
选择Kirikiri,Game executable选择游戏exe,然后点击Create Project。
发现正常没提取到文本,所以把Extract XP3 files和Decrypt encrypted files的选项打开,再点击一次Create Project,这次没问题。

2.根据KeywordGacha的推荐方式,导出游戏文本为xlsx格式。步骤如下:
Collision×Collision的文本只有一个first.ks,所以打上first.ks前面的√,
右键-With1已选择-导出到-Excel2007电子表格,
Read Character encoding填shift-jis, utf-16, utf-16le, utf-8,
Write Character encoding选UTF-16LE,导出文件。

3.把要翻译的文件之外的文件都删了。
删除方式为在上一步右键时有个删除文件的选项。
(如果接下来你使用LinguaGacha翻译时想要翻译xlsx文件而不是trans文件,则不用删。
我个人建议翻译trans文件,xlsx文件翻译串行的概率不低。)
ctrl+s保存trans文件,关闭Translator++。

4.修改KeywordGacha文件夹下的config.json,配置api_key、base_url、model_name。
我使用的是deepseek-v3,
获取apikey可查看这个教程
base_url为https://ark.cn-beijing.volces.com/api/v3,
model_name为deepseek-v3-250324。

5.将Translator++导出的xlsx文件放入KeywordGacha文件夹下的input文件夹内。
双击app.exe启动工具,输入5来测试接口是否配置正确。
显示接口测试执行成功,按回车,输入3(如果你是其他语言则视情况而定),再按回车,等待分析结束。
分析结束后按回车关闭KeywordGacha。

6.在KeywordGacha文件夹下的output文件夹中,对照日志校对json或xlsx文件,两种格式的术语表校对哪个都可以。
个人觉得汉字的人名标个性别就可以,需要多加注意的是读音的片假名要在术语表中确定汉字怎么写,不然就会乱翻译。


【使用LinguaGacha翻译文本】

1.参考这个教程进行软件的基础配置。

2.开始翻译-开始,等待翻译结束。

3.使用Translator++打开output文件夹中翻译过的trans文件。
(如果你翻译的是xlsx文件,可以查阅上面其他游戏的教程)
你可以在Translator++中直接进行校对工作,但由于相同句子可能有不同的翻译(比如はい),而Translator++的差分翻译实际上并不方便,我会导出为ks文件后,用notepad++直接修改ks文件。
一般我也会同时开着Translator++方便我在校对时去翻原文。
导出ks文件的方法:打上first.ks前面的√,右键-With1已选择-导出到-文件夹。

4.(可选)翻译错误到了需要重新翻译部分句子的程度的时候,LinguaGacha的百宝箱里有批量修正和部分重翻的功能,软件内有引导。

5.封包,制作补丁等看上面其他游戏的教程。

问题解决方案

【文件有加密,解压文本乱码】

比如文件夹里有data.xp3.sig,用xp3upk、garbro解包都乱码时,
可以用Translator++来解包。
新建工程-Kirikiri Adventure Game,如图所示。kirikiri-1


【导入T++后,汉化文本里有\

删了就行,不会报错。


【导入T++后,汉化文本里有\n

全文替换为[r]。


【从T++导出后游戏文本乱码或缺字】

Reading Character encoding填shift-jis, utf-16, utf-16le, utf-8
Write Character encoding选UTF-16LE


【ruby text在报错】

中间空格没了,把rubytext替换为ruby text。


【更换字体】

方法1:
替换config.tjs里的userFace,须为电脑上已安装的字体。
若游戏已引入外部字体,则替换mappfont storage。
将字体安装文件随汉化补丁分发,以防其他玩家电脑上未安装该字体。
若修改为引擎自带的宋体、新宋体、黑体、楷体_GB2312、仿宋_GB2312,则不需要分发字体安装文件。

方法2:
使用THE NVL Maker里的krkrfont,将想引入的外部字体的字体文件转换为tft文件。
在ks文件开头设置[deffont face=”字体名”]。
将tft文件放入patch.xp3,删除存档后进游戏看效果。

因在日文版krkr中,若借助LE转日区打开游戏,则中文字体会有粗有细,
为规避这一问题,需将所有可用记事本打开的文件编码都转换为UTF-16LE。
UTF-8应当也可行但我没试过,须保证所有文件的编码一致,否则会报错。
你可以使用notepad++完成转编码的操作。

THE NVL Maker.rar


❖ Ren’Py

特征为文件后缀为rpa、rpy。
这个引擎的游戏的UI基本都是可修改的文字,大大减少了修图的工作量。
但如果使用Translator++进行文本提取的话会有大量代码也被提取出来,
进而如果把代码翻译了就会疯狂报错。
建议要么在excel阶段把所有代码以及只有全小写的单词的行都删掉,
要么翻译后在Translator++把所有疑似代码的行都tag为红色并不导出。

新版本的Ainiee的代码救星插件解决了这个问题。

Dreambound(使用Translator++和Ainiee)

【解包】
资源文件在game\archive.rpa
使用rpaExtract,将archive.rpa和rpaExtract.exe放在较短的全英文路径的同一文件夹中,将archive.rpa拖到rpaExtract.exe上等待即可。
rpaExtract.exe(密码af1q)


【汉化】
使用Translator++和Ainiee进行文本提取和翻译。
流程可以完全参考B站@TJJtjj:用AiNiee+ChatGPT翻译renpy游戏


【需调整的文件位置】
game\chapters  #剧本文件
game\script.rpy  #人名
game\chapter_screen.rpy  #章节名
game\gui.rpy  #字体 建议直接把你想使用的字体的文件名改为游戏使用的字体的文件名,覆盖掉原字体
(根据汉化Beyond Eden时的经验,ui的文字在renpy\common\00layout.rpy修改,双引号内的是可修改的文字)


【制作补丁】
保持目录结构一致,直接覆盖游戏原文件。
修改后的后缀为rpy的文件,放在archive.rpa同一文件夹中。
可以参考我制作的该汉化补丁的结构。


❖ TyranoScript

这个引擎做的游戏的默认图标是个恐龙玩偶外套的女孩(男孩?)。
存档后缀是.sav,通常游戏资源全都封装在了exe里导致exe特别大。
解包方式也很粗暴,把exe后缀改为zip,解压就可以了。
但总有意外之时,比如PSYCHIC ECLIPSE
解压之后会有个叫tyrano的文件夹。

powdergray(使用Translator++和Ainiee)

【解包】
exe后缀改为zip,用winrar(或任意能解压zip的软件)解压。


【汉化】
使用Translator++和Ainiee进行文本提取和翻译。
流程可以参考B站@TJJtjj:用AiNiee+ChatGPT翻译renpy游戏,最开始选【TyranoScript Game】。
做到把翻译好的游戏文件导出到文件夹那一步就可以了。


【制作补丁】
使用Translator++导出游戏文件的话,正常来说是会按正确的目录结构来导出的。
你也可以把exe解包了看看他里面的目录结构是什么样的,把文件按结构放好。
然后查看data\system\Config.tjs中的projectID。
将游戏文件压缩为zip,压缩时命名为projectID.zip,压缩后重命名为projectID.tpatch。(这里都是之前查到的projectID)
分发这个tpatch即可,使用方法为放在exe同路径下。
*TyranoScript的tpatch原理是,在打完补丁后初次打开游戏时会解压tpatch内的文件覆盖到exe中的游戏文件上,所以要保持与exe中目录结构一致。

PSYCHIC ECLIPSE -心灵侵蚀-(使用Translator++和Ainiee)

【解包】
资源文件在resources\app.asar
使用WinAsar,左侧点【Extract】,右上角点【Open】选择要解包的【app.asar】,
下方选【Extract】,等待读条结束。
在app.asar同文件夹会出现名为【app.asar.unpack】的文件夹,里面即为游戏文件。
WinAsar.exe(密码5vt6)


【汉化】
使用Translator++和Ainiee进行文本提取和翻译。
流程可以参考B站@TJJtjj:用AiNiee+ChatGPT翻译renpy游戏,最开始选【TyranoScript Game】。
做到把翻译好的游戏文件导出到文件夹那一步就可以了。


【制作补丁】
在查阅下方文字前,请先把下方提供的汉化补丁下载并解压(tpatch后缀改为zip后解压),以便于理解这个汉化补丁的结构以及各个文件都是怎么来的。
我上网查了很久也没找到这个游戏补丁应该是什么结构,硬试出来的
如果汉化后发现角色都哑巴了,记得所有剧本文件中的vrepeat name也需要修改为中文人名。

data\image\button  #选项,这游戏的选项都是图片,需要ps汉化
data\others  #引入的外部字体
data\scenario  #Translator++导出的汉化剧本文件
data\scenario\first.ks  #第5行 title name可修改游戏标题
data\system\Config.tjs  #第72行 userFace修改为引入的外部字体名;记录下第6行projectID
tyrano\css\font.css  #第16-25行 引入外部字体样式

将data和tyrano两个文件一起压缩为zip,压缩时命名为projectID.zip,压缩后重命名为projectID.tpatch。(这里都是之前查到的projectID)
分发这个tpatch即可,使用方法为放在exe同路径下。


❖ YU-RIS

未成之缘 なりそこないのよすが(使用Translator++和Ainiee)

【解包】
使用GARbro,资源文件在pac文件夹中,选【尝试猜测】即可。
使用教程:B站@风于落叶:GARbro使用教程及诸多解包/打包工具包。
GARbro-Mod-1.0.1.2.rar


【汉化】
使用Translator++和Ainiee进行文本提取和翻译。
流程可以参考B站@TJJtjj:用AiNiee+ChatGPT翻译renpy游戏,最开始选【YU-RIS engine translator】。这个插件需要在Translator++的【选项-插件】中安装。
这种汉化方式可以避免编程,坏处是无法给文本换行,但能汉化已经算是赢。
这一步做到文本汉化结束为止,不需要导出游戏文件到文件夹中。


【制作补丁】
给所有疑似人名而非对话的行都Tag为红色。
点击Translator++上方【Inject/apply all translation】。
【请选择需要应用的列】选择游戏原版的文件夹。
【将会在该位置生成注入翻译之后的游戏的副本】选择汉化补丁想要放在的位置。(建个空文件夹)
【复制原文件】选择【Do not copy materials, inject translation only】。
【标记】点亮红色,选择【Do not process row with selected tag (black list)】。
【Bulid option】选择【Repack into origin YPF file(s)】。
点击【应用翻译】。
在之前选择的汉化补丁想要放在的位置会生成一些文件,这些即为汉化补丁,分发即可。

一些工具

有些游戏在使用Translator++汉化时会出现补丁不生效、卡住等问题,
我查看了一些教程,虽然最后还是没成功,但我认为可以记录一些有用的工具,也许在其他游戏用得上。

【有用的教程】
A complete guide to unpack and repack Yu-Ris engine fileshttps://forums.fuwanovel.moe/topic/24704-a-complete-guide-to-unpack-and-repack-yu-ris-engine-files/ How to pack ybn back to ypf?https://github.com/arcusmaximus/VNTranslationTools/issues/9 [YU-RIS] 免封包处理https://www.cnblogs.com/Dir-A/p/18096964我很幸运地遇到了【免封包处理】中的【一些意外】,所以卡在这一步放弃了。


【有用的工具】
ToolForYurishttps://flamecho.lanzout.com/ivu2Z2zxbdqb YPF Manager Toolhttps://flamecho.lanzout.com/iCHpV2zxbdyj都是用于解包封包的命令行工具。
使用方式为解压压缩包后,win+r输入cmd打开命令行,输入cd 压缩包内exe所在的文件夹路径,然后输入ToolForYuris.exe 或 YPFManager.exe,之后输入对应操作的指令。
你可以将输入exe后出现的说明复制发给deepseek,说明你的需求,让deepseek告诉你应该输入什么指令。


❖ Macromedia Director

只有解包教程。

好きなものは好きだからしょうがない!! FIRST LIMIT

【解包】
使用DirectorCastRipper,使用教程见该项目的Github说明。
CG、BGM、剧本都在DATA\CAST下,把想解包的cxt文件拖到DirectorCastRipper上即可。
DirectorCastRipper_D10.zip
DirectorCastRipper_D12.zip

【思考汉化方式时找到的工具】
虽然最后没用上,因为文本换行问题,机翻有点耗时,就放弃了。
但是想到了别的汉化方式,所以也不算完全无功。

dirOpener,这是一个将受保护的cxt等文件转换为可使用Macromedia Director编辑的cst等文件的软件。
在使用时需要将想转换的文件和dirOpener放在同一目录下,将想转换的文件拖到dirOpener上即可。
dirOpener300-850-1-PC.zip


❖ NScripter

CAGE-CLOSE-(使用Excel和Ainiee)

机翻完了没空校对,来记录一下过程。

【解包】
使用GARbro,资源文件在arc.nsa中。
使用教程:B站@风于落叶:GARbro使用教程及诸多解包/打包工具包。
GARbro-Mod-1.0.1.2.rar


【汉化】
文本在nscript.dat。
nscripter-1将nscript.dat和NSDEC.exe放在同一文件夹内,将nscript.dat拖到NSDEC.exe上,生成result.txt。
NSDEC.rar
nscripter-2在notepad++新建一个txt,编码改为GB2312,将result.txt内的所有内容复制到新建的txt里,将新建的txt保存并命名为0.txt。
nscripter-3新建一个xlsx表格,将0.txt中的所有内容复制到xlsx第一列。

如果粘贴时出现分成两列的情况,参考以下步骤:
1.选中一个带有值的单元格。(即非空的单元格)
2.选择数据> 分列,选择分隔符号。
3.去掉所有分隔符号前面的勾。
4.点击完成。 然后粘贴数据。

第一行A1填写Original Text,B1填写Initial,然后使用Ainiee翻译,格式选择T++导出文本,记得勾选代码救星插件。
nscripter-4第一列是原文,第二列是Ainiee翻译的文本,为了合并两列的代码和汉化文本,在C1填写=IF(AND(A1=””, B1=””), “”, IF(B1=””, A1, B1))然后下拉填充到最后一行,将C列的所有文本(第一行除外)复制粘贴到0.txt的对应部分,实现文本汉化。

单独给一下代码
1
=IF(AND(A1="", B1=""), "", IF(B1="", A1, B1))

注意把汉化文本中所有的半角字符、数字都改为全角字符,否则会报错。
如果从excel复制到txt多了双引号的话,就先复制到word,再从word复制到txt。


【制作补丁】
有两种制作补丁的方式。

1.分发0.txt和NS 296 1.04.GBK.exe:0.txt可以直接放在游戏文件夹内,但需要删除原本的nscript.dat,然后使用NS 296 1.04.GBK.exe启动游戏。这个exe可以重命名。

2.分发汉化版nscript.dat和NS 296 1.04.GBK.exe:能让玩家直接替换总比让玩家自己删文件要容易很多。使用脚本打包.exe将0.txt转换为nscript.dat,软件内有引导。

NS 296 1.04.GBK.exe(密码1u8f)
脚本打包.exe(密码fhwe)


【备注】
我不打算进行图片的汉化,但还是有必要说明一下如何进行这一步。
使用nsaout进行arc.nsa的提取,将arc.nsa和nsaout.exe放在同一文件夹内,将arc.nsa拖到nsaout.exe上,生成arc文件夹。
nsaout.rar
修改图片后,用资源封装NSA.exe将arc文件夹封装为arc.nsa。
资源封装NSA.exe(密码:d5dy)

海色狂詩曲 -ウミイロラプソディ-(问题解决方案)

过程跟上面是一样的,记录一些问题的解决方案:

【文字全乱码】

确保0.txt的编码为GB2312。


【个别文字乱码】

包括但不限于:文本中的ABCD等字母需要为全角符号;句子里可能有个逗号是英文的半角逗号,改为中文的全角逗号。


【无法存档】

这个问题我没解决,如果有人知道希望可以告诉我,虽然我觉得影响也不大,大不了一次性通关。
我发现日文版也无法存档,所以不是汉化导致的问题。
而这个游戏总不至于发布出来就是存不了档的,以兼容性打开也没用,所以我倾向于认为是windows版本太高导致的。


【文本框的位置有问题】

使用Translator++进行汉化的话有时候会把第一行吞了,或者为了省ai的token没有把txt最上和最下的大段代码也复制到excel里,结果从excel粘贴回txt的时候忘记把最上和最下的代码也粘贴回去。可能听起来很荒谬,但我真的出过这种错
注意代码是否完全还原。


【刚进游戏就报错】

这基本可以确定是代码出错了。
有两种可能:
一种是ainiee把代码也翻译了,如果你已经翻译完了,要么批量替换,要么把代码救星插件开了重新翻译一遍。
另一种是从excel粘贴到txt的时候多出来一堆双引号,这似乎是excel的分隔符之类的问题,解决方案是先从excel复制到word,再从word复制到txt。


【选择肢报错】

把选项里面的\删了。


【文字超出窗口】

在确保以上问题都不存在的情况下再来看这条。
在nscript的语法中,\是换页。
所以你需要在没换行的句子结尾加一个\,来让它成功地换到下一页去,就不会超出窗口了。


❖ Light.vn

Lost Friends3 -Never returN-(使用Excel和Ainiee)

【解包】
资源文件在Data文件夹下的一堆vndat文件里。
使用Light.vnTools,将vndat文件拖到LightvnTools.exe上,在游戏文件夹同路径出现解包文件夹。
记得事先安装.NET 7.0 SDK.NET 8.0 SDK,不同版本的SDK需要使用对应版本的Light.vnTools。
Light.vnTools-v1.2.0-net7.zip
Light.vnTools-v1.2.0-net8.zip

data001  #BGM
data002  #字体
data003  #图片
data004  #视频
data005  #剧本
data006  #音效


【汉化】
用notepad++打开data005.vndat里的txt,修改为UTF-8编码不然就会乱码,然后对文本进行汉化,机翻汉化的流程可参考NScripter章节的CAGE-CLOSE-,大概流程是新建一个xlsx表格,将所有文本粘贴到第一列,第一行A1填写Original Text,B1填写Initial,然后使用Ainiee翻译,格式选择T++导出文本,机翻完参考CAGE-CLOSE-教程导入文本的那一步,文本导入完成就结束了。


【制作补丁】
有两种制作补丁的方式。

1.把包含修改过的文件注意这里只能是Data文件夹内的修改过的文件,如果要修改Config文件夹内的文件,则要直接覆盖,而不是压缩在补丁里,详见下方提供的补丁的data005文件夹和data005.vndat放在同一目录下,把data005文件夹拖到LightvnTools.exe上,分发新生成的data005.vndat。

2.把任意一个vndat文件重命名为Patch.vndat,把修改过的文件按照目录结构放在一个名为Patch的文件夹内,将Patch.vndat和Patch文件夹放在同一目录下,把Patch文件夹拖到LightvnTools.exe上,分发新生成的Patch.vndat。
这里的目录结构意思是,比方说data005.vndat的文件结构是data005\Scripts\xx.txt,那么Patch文件夹则是Patch\Scripts\xx.txt。


❖ AIRNovel

一个基于Adobe Air的游戏引擎,因此要游玩这个引擎制作的游戏需要先安装Adobe Air。

Re;quartz(使用Excel和Ainiee)

【解包】
不知道是这引擎不能封包,还是这游戏就是没封包,总之所有资源都在明面上,不需要拆。


【汉化】
用notepad++打开scenario文件夹里的an后缀的文本。
因为我想使用ainiee的代码救星插件,所以将文本粘贴到excel中伪装成T++导出文本。
具体参考本文NScripter章节中的汉化部分,机翻完把excel中的文本粘贴回an后缀的文件,然后放回scenario文件夹。
修改图片方面直接去对应文件夹找图片P图。


【制作补丁】
把修改过的文件直接分发出去,替换即可。


❖ System-NNN

cyc社常用的游戏引擎。

薔薇ノ木ニ薔薇ノ花咲ク(使用VNTranslationTools和Ainiee)

【解包】
使用GARbro,资源文件各个文件夹中,dwq是图片,vaw是音乐。
使用教程:B站@风于落叶:GARbro使用教程及诸多解包/打包工具包。
GARbro-Mod-1.0.1.2.rar


【提取文本】
使用VNTranslationTools。
VNTranslationTools.rar
使用方式参考B站@五娼会会长:Krkrz游戏汉化全流程中的第五步,提取出json格式的文本。


【汉化-1】
使用AiNiee对文本进行AI翻译。
AiNiee:一款专注于Ai翻译的工具
翻译设置选择【VNText导出文件】,使用方式参考B站@TJJtjj:用AiNiee+ChatGPT翻译renpy游戏中的AiNiee设置部分。
翻译完用VNTranslationTools将json格式的翻译文本改为spt格式的剧本文件。


【汉化-2】
导入游戏后会发现汉字不能正常显示,需要打上VNTranslationTools提供的字体补丁。
将导出spt文件时一同生成的sjis_ext.bin放在与游戏exe同目录下。
然后打开VNTranslationTools文件夹,将VNTextProxy文件夹中的dll依次放入游戏exe同目录下,测试哪个dll能使文本正常显示。


【汉化-3】
文本正常显示后发现对话框里的文本会出现在人名框中。
发现这个问题仅出现在旁白,即json文件中没有name一行的文本中。
使用notepad++进行批量替换,在这种行上添加”name”: “ “注意双引号里有个空格,让不存在人名的旁白行也能给人名框留出一行位置,如下图。
nnn修改后再次用VNTranslationTools将json格式的翻译文本改为spt格式的剧本文件。


【制作补丁】
分发修改的spt等文件,sjis_ext.bin,可以正常显示文本的dll。