古法汉化(Dir-A佬的教程)
https://www.bilibili.com/video/BV1ph411J7Pf/
AI翻译:
1.解包
用GARbro/arc_conv提取scene.int到根目录新建的scene文件夹,解出来的是一堆被压缩过的cst文件,这就是我们所需的文本,其余格式的文件可以删去。
2.提取
Github上有很多cst文件的处理工具(搜索cst或CatSystem2),最简单的提取莫过于Galtransl自带的GalTransl_DumpInjector,提出来的文本除了时而有几个控制命令外算是非常纯净的了。但这个工具所基于的VNTextPatch年久失修,有时候会有很多bug,如下图为回封文本时产生的bug,但我在翻译这个游戏时依然采用了GalTransl_DumpInjector,因为其它工具要么是只有提取没有回封,要么是提取出来的文本不干净还要自己写正则(倒也不是特别难写就是了)。bug的处理方法将会在后面说明。

(示例游戏:プリズム◇リコレクション!)
3.修图
CS2引擎的图片格式为hg3,可用CatSystem2 Tools(分享链接我会放在文末)中的WGC工具进行解压缩

特别的,hg3格式可以是单图层图片,也可以是多图层图片——即一个hg3文件会解压出来多个图片。对于多图层hg3的处理办法可以使用https://github.com/xd2333/cs2_hg3工具,跟着里面的说明走即可。如果中途报PIL的错可以先安装Pillow库:
pip install Pillow
这次我会处理多图层图片的原因是示例游戏使用了加载图片作为角色名字的显示方法(可在config.int中找到nametable,一般CS2引擎会直接使用字符显示)。所以在这部游戏的情况下,翻译人名不仅没用,还会因为nametable对不上而导致姓名显示丢失,只能修图,而所有的姓名贴图就存储在image00.int中的一个多图层的hg3文件内。
4.翻译
翻译时注意保持换行符数量一致以及控制语句不变,避免出现错误,利用Sublime的正则搜索功能进行诸如(?<!\\)\\f
、(?<!r)\\n
之类的搜索(查找前面不是\的\f & 查找前面不是r的\n)以避免回封后产生bug。另外的,vnt提出的其标音语法为[基本文本/振假名]
。
5.文本回封
经测验,提取部分所述的回封bug可通过在GalTransl_DumpInjector回封之前先通过SExtractor进行JIS替换的方式来解决。在TXT引擎下写一个类似于
01_search="name": "(?P<name>.*)"
02_search="message": "(?P<msg>.*)"
的正则来进行替换,同时要注意SE给出的两种提示:译文存在替换字典未匹配字符&原始译文含有替换后字符,可以先用GalTransl_DumpInjector放进游戏里试一试,看看这些字需不需要更换别的汉字(通常是需要的)。
6.封包
CS2引擎通常是可以免封包的。如果不能免封包,可直接使用GARbro进行int封装,对于示例游戏可通过添加UPDATE01.INT,UPDATE02.INT……的升级文件实现不删除原int文件的内部替换,其余游戏是否可行尚未验证。