0.前言
自ChatGPT3.5横空出世以来,galgame圈的变化有目共睹——御爱同盟的成立,2DFan新增AI分区,绯月可以求AI翻译的补丁……这一切都建立在AI翻译与普通机翻巨大的翻译质量差距上,在我写下这一段文字的时间内,正是Claude系列模型受欢迎的时期,而说不定在几天过后它又会被其它模型甚至新技术取代。尽管现在的模型在一些诸如口吃、呢喃、玩梗等方面的翻译质量依旧捉鸡,但其在一般语句上无可挑剔的流畅度与准确性配合其绝群的翻译速度可谓完全弥补了这一缺点。尽管距离AI翻译取代人工翻译的日子依然很长,但它的的确确改变了——至少是普通玩家对于galgame汉化的看法。在之前,找人要求汉化一部gal对普通人而言挺天方夜谭的,而要等一部游戏的汉化更是以年为单位的,还要做好有生之年的准备。而现在,你只需要每天去看看AI翻译区又出了哪些新游戏。如果有自己想玩的游戏没有AI翻译补丁,你也可以直接去请求那些发布者们来跑一跑自己的游戏。甚至你也可以不求人——这也是本文的重点——何不直接自己跑自己喜欢的游戏呢?或许在之前,想要做一个完整的汉化补丁,你需要逆向,修图,一点一点测试然后排除bug。

但现在你已经是一个成熟的galgame玩家了,菜单什么的基本都看得懂,只是想简单地把最基本的文本提取出来翻译一遍再填回去,而这在现在对于大多数galgame的游戏引擎而言已经并不需要太高的技术含量了。如果你想0基础学习如何使用AI翻译galgame,你可以继续浏览本文。当然,我不排除你可能能在御爱或者其它地方找到更加优秀的技术教程贴,关于这点还请自行判断。
(文章所提及的部分资源将会在文末以度盘形式分享)
Dir-A
Dir-A的Github:https://github.com/Dir-A
Dir-A的bilibili:https://space.bilibili.com/8144708
在这里我觉得我有必要给我最尊敬的汉化导师一个大标题,你们在本站将会多次看到他的身影。
1.基础理论
1-1.游戏、编码与编辑器
在本节你需要学习3个视频。其中第二个视频针对古法汉化帮助较大,AI翻译现在基本上很难用得上,可以暂时略过。
【[Gal汉化入门]#1 基础知识部分】 https://www.bilibili.com/video/BV1gP4y1t7sF/
【[Gal汉化入门]#2 调试器操作】 https://www.bilibili.com/video/BV1J54y1J7gp/
【[Gal汉化入门]#3 编辑器的使用】 https://www.bilibili.com/video/BV1iP4y1x7Du/
三个视频全部出自Dir-A佬的b站,也有相应的文字教程,这将是你们理解galgame汉化的基石。这里面没有任何难懂的地方,如果有,那就查百度,或者去b站搜相应的科普视频。
另外的,当你们看完这三个视频后,你们的电脑上起码应该多出三个汉化gal最基本的软件——Sublime Text、EmEditor和WinHex,这是无论古法汉化还是AI汉化都必须要用到的几款软件。
1-2.正则表达式
正则听名字好像挺高端,但其上手难度其实非常低——你不现在学也无所谓——但当你想用的时候,就回来这节看看吧。
在本节你需要完整地看完下面这个视频:
【10分钟快速掌握正则表达式】 https://www.bilibili.com/video/BV1da4y1p7iZ/
然后下面这个视频不用看,记一下01:00处的表就行了:
【30分钟正则表达式教程】 https://www.bilibili.com/video/BV1fm411C7fq/
恭喜你,你已经学会基本的正则表达式了。另外的,有一种和正则表达式比较像的东西,就是word里的通配符。

虽然说像,但它们的用法和符号使用大有不同,你需要在理解正则的基础上去搜word的通配符用法大全。嘛,多试试就理解了,本文不再过多介绍。
2.环境准备
2-0.说明
本章将会介绍多个环境准备项。注意,这些配置是出于我自己用过而在这里介绍出来,并不代表你一定会用到,你可以和正则一样,等需要了再回来看本章。
2-1.Python
先去Python官网下载适合版本的Python

注意安装时选择Add python.exe to PATH以及最后的什么Limit(突破路径限制)。

2-2.Visual Studio
必应搜索Visual Studio或直接进入官网下载页,选择社区版免费下载

在Visual Studio Installer中选择Python开发和使用C++的桌面开发进行下载安装即可。
2-3.VScode
看下面的这个视频配置,对VScode有个最基本的了解就行:
【Visual Studio Code安装配置C/C++教程,VSCode调试教程,VSCode安装使用教程,VSCode配置c/c++】 https://www.bilibili.com/video/BV19c411G7ey/
2-4.Git
强烈建议下载,不下载可能导致某些程序报错。配置方法简单粗暴,去官网下载页下载对应的安装包,然后一直next点到安装完就行了。
2-5.运行库
避免你的电脑出现一些奇奇怪怪的错误
资源链接放在文末
2-6.TotalCommander
非常有用的文件处理工具,强烈建议安装
资源链接放在文末
3.AI翻译器——Galtransl
事实上,目前AI翻译器并不稀缺,其中有两款人气比较高的——Galtransl和AiNiee。
后者的优势主要在于优雅的图形化界面以及可以添加游戏背景说明的功能,但其更偏向于RPG、SLG而不是ADV。(其实Galtransl也能加背景说明,你可以在Prompts.py的这个地方通过改Prompt的方式来加背景说明,不过当然的,这种办法不太优雅)

本文将主要介绍我最熟悉的翻译器——Galtransl。
说是介绍,其实你读一遍它的Github主页就没什么我能插嘴的了。但为了更方便地理解,我想先推荐你看完Dir-A佬的KiriKiri引擎汉化教程:
【[Gal汉化入门]#9 KiriKiri2/Z 脚本编码转换】 https://www.bilibili.com/video/BV1m64y187df/
【[Gal汉化入门]#10 KiriKiri2/Z 文本修改方法】 https://www.bilibili.com/video/BV1C3411y7aJ/
【[Gal汉化入门]#11 KiriKiri2/Z 图片编辑介绍】 https://www.bilibili.com/video/BV1cT4y1f7zq/
【[Gal汉化入门]#12 KiriKiri2/Z 字体修正思路】 https://www.bilibili.com/video/BV13q4y1Z7YN/
【[Gal汉化入门]#13 KiriKiri2/Z KRKRZ处理演示】 https://www.bilibili.com/video/BV1Eg411F7Ww/
KrKr引擎可能是很多人第一次玩gal时碰到的引擎,也可能是萌新最常碰到的引擎。尽管现在大部分的KiriKiri引擎已经用不到这么麻烦的步骤了,但这些视频将会向你植入一些最基本的概念。相信我,如果你以前并未接触过Gal汉化,那么请在看完这些视频后再去看Galtransl的主页说明,你的理解将会更加充分,而我后面的说明也会更加容易。
然后我们再回到Galtransl上。
3-1.Galtransl的配置
Galtransl(以下简称GT)其实是有win免环境版的,但免环境版我以前用出过bug,就没再用过。普通的版本需要你安装python,并在run之前先运行“安装、更新依赖.bat”。同时我安装了jieba库,也就是把requirements.txt修改为
httpx
opencc
packaging
prompt_toolkit
PyYAML
re_edge_gpt
Requests
tenacity
tiktoken
tqdm
colorlog
openpyxl
orjson
EbookLib
beautifulsoup4
playsound3
# Tokenizer
budoux
# Optional tokenizers
jieba
# pkuseg
# Very heavyweight tokenizer, manual installation recommended
# numpy < 2.0.0
# hanlp
这样的……只是一处小改动而已,这是为了以后修复换行符时使用更好的算法而做的。
3-2.文本提取
在看完Dir-A的视频及GT主页的说明后,我想你已经对AI汉化的流程有了自己的理解,甚至已经可以自己着手翻译一些简单的游戏了。然而若是你想翻译的游戏无法通过GT提供的GalTransl_DumpInjector工具(以下简称GTD)提取出令人满意的文本,Dir-A佬的教程也并未涉及这款游戏所对应的引擎,又该如何是好呢?
好吧,一步一步来,首先是引擎判断。你可以通过各种各样的方式判断游戏引擎的名称,包括搜索资源包后缀名,脚本文件(如果你认得出哪个是脚本文件的话)后缀名,游戏甚至会社名来找到对应的引擎名称。当然了,最常见的还是用GAR开一个封包看看左下角的封包提示。
除了极少数如rUGP这种GAR解不开包的引擎,其它引擎基本都可以通过这种方法来判断。
顺便推两个帖子https://morkt.github.io/GARbro/supported.html
https://forums.fuwanovel.moe/topic/17841-script-extraction-thread/,可能会对你找引擎有所帮助。再者是文本的解包工具——因为大部分的脚本都不是明文而是密文——到这一步,去搜索引擎搜索“xx引擎的文本解包工具”已经是大海捞针了,此时我们应该及时转战Github。在Github上,你应该尽可能的寻找所攻引擎的文本解包封包工具——最好是能解也能封的,毕竟解出来翻完封不回去也没有意义。

——截至写作时我所收集的部分引擎工具
你可以在Github上搜索会社名,脚本后缀名,引擎名甚至游戏名来找工具,也可以在各大论坛寻找教程或是询问跑过同引擎游戏的其他补丁作者来了解某引擎文本的解封包办法。本站也将不断补上我自己翻译各引擎的经历记录。总之,办法肯定是有的,看你收集信息的能力了。
然而,得到明文脚本还远远不够,如果不是GTD提取的文本,那么得到的明文并不会自己变成GT翻译所需的name-message格式的json文件。此时,我们就需要一位重量级嘉宾——SExtractor的相助。
SExtractor(以下简称SE)可以通过正则匹配来将明文脚本转化为name-msg格式的json。你可以通过阅读其主页了解它的大致功能及原理。但由于SE自身的说明极为晦涩难懂,因此我写了一篇心得,仅供大家参考。
3-3.API接入
如果你还不知道API是什么,觉得它是什么编程相关的很高深的定义,其实也不用慌张。按着教程走,多看多用你自然就会理解的。
GT主页已经对GPT(大语言模型)的API有过介绍,config.yaml也有对各个参数的说明。现在中转API的性价比远超官方API(当然这要看时期,比如24年冬的claude死了之后中转api基本都有掺假,甚至gpt系列也受到了波及),用起来非常方便。本节将主要介绍为GT接入大模型的两种方式——通过中转api接入及通过本地部署大语言模型(如SakuraLLM)接入。
3-3-1.中转api
想要获得中转api,你首先得找个中转API的网站,但我并不推荐GT主页所挂的那些个api网站。比如那个Happy API各种小毛病就没断过,包让人红温的不稳定。
如果你不了解api各渠道的差别,建议你google一下,或者直接记住以下不等式:
官key/官转>Azure(AZ)>逆向
各家有各家的叫法,总之基本上越贵越好,但AZ在和官key的质量差别很小的同时比较便宜所以性价比一般是最高的。总之选中转站记得选渠道多的,便宜但也没便宜得特别夸张的就行。
https://api.wlai.vip/register?aff=FdWT
https://29qg.com/ (kaTk)
这是我自己用过的两个中转站的邀请链接(码),我不是打广告的,这些网站我也不能保证质量或者永远不跑路什么的,请各位谨慎选择。另外的,再强的中转api有时也会不稳定,比如报一些“没有可用的APIkey”之类的错,基本上好一点的中转站几天内就会解决的。
总之,在买好额度,开设好相应分组的token(令牌)后就可以接入了。对了,那些代理相关的设置是专门用来翻墙的,我们无视即可。

——无脑填入即可。
3-3-2.本地部署模型接入(以SakuraLLM为例)
本节我们实现本地部署的方式是Sakura启动器,这在SakuraLLM的Wiki里有说明。
你可以在huggingface下到SakuraLLM的所有模型,这里我们以新出的这个模型为例。将扩展名为gguf的模型下载下来并与Sakura_Launcher_GUI放至同一目录下。开启GUI进行设置


当然,设置需要根据你的电脑配置来。
如果你是第一次运行,那么你还需要先下载llama.cpp,并在下载后将llama文件夹里的dll复制一份在GUI的根目录下。
由于我习惯给启动器的端口设成5000,所以我的GT应该是这样设置接入的

——改个端口就行,简简单单。当然了,有本地部署,自然就有云端部署,但那就不是本文会涉及的了,如有兴趣还请自行搜索相关信息。
3-4.字典设置
基本的字典用法你们应该已经在GT主页学习过了,比如随便拿我的一个项目GPT字典来举例差不多是这样的

请注意,一般来说字典复杂到这种程度的话,你需要使用起码是GPT4,最好是Claude系列的模型。其实GPT4我都不推荐这样写,按GT主页说明的那样简单拿英文写两下就够了。这个游戏是我比较中意,外加拿Claude-3.5-sonnet跑的,所以才写了这么多。另外,一般来说标音语法为了方便是可以不保留的,甚至有时候保留了反而会出问题。
对于一些昵称之类你没玩游戏不晓得要写这个字典的,可以先过一遍KeywordGacha来提取高频词。
另外再做点提醒,一个是H译前字典中的
にゃ な //可能把猫叫替换掉
にょ の
这两行建议删了
还有一个是条件字典并不会匹配数量,比如这样两行条件字典
pre_jp 『 “ 『
pre_jp 』 ” 』
如果原文是「xxxxxxxx『yyy』xxxxx“zzzzz”ddddddd」
翻译过后变成「cccccccccc『fff』gggggggg“qqqqq”uuuuuuuu」
它依然会被修复成「cccccccccc『fff』gggggggg『qqqqq』uuuuuuuu」
如果某些引擎利用相应符号来表达标音语法,需要注意别让那些符号被修复了。
还有就是性器翻译的统一,有兴趣也可以做,能提升HS的观感。另外,如果提取出的json带name的话记得dump出name然后改人名表(如果name能改的话)。
3-5.插件设置

默认的插件设置是这样的。如果你想翻epub文件的话,你就可以改成这样

翻译其它格式同理,把plugins文件夹里的文件夹名复制粘贴上去就行了。另外的,你还可以打开这些文件夹并去设置里面的yaml。例如对epub来说是这样的

如果你遇到了不保持换行符数量一致回封就会出bug的gal引擎,那么你可以把textplugin改为text_common_lineBreakFix,并在其设置中将分词器改为更好的jieba(pkuseg库的python版本不兼容)


还有更多插件详见GT的插件列表说明。
3-6.尽量不要用它项目里生成的bat文件,容易出bug
4.回封与测试
一般来说,如果想避免麻烦,那么以SJIS替换的方式回封文本外加字体安装是实现简中显示的最简单的措施,但可能在非简中windows上支持性不佳。GT的主界面有SJIS替换的介绍和示例,SE勾选UIF替换即可使用替换字典生成日繁及对应的UIF的config文件。
针对UIF和字体替换我曾经为它人答疑时做过一些解释,详情请看末尾网盘内视频
另外的,虽然GTD执行SJIS替换时使用的字典是死的(好像改了会卡死),但SE的执行和安装的覆盖字体可以是活的。修改SE/src下的subs_cn_jp.json可以修改替换字典(这个字典的路径在src/helper_text.py里,可以自行设定),然后在Tool/Font里使用font_CN_JP.py可为某款游戏或为你自己创建独属的字体,毕竟GTD和SE自带的字典都有一些缺陷,一些常用字没有被收录,反而一些这辈子都估计见不着一次的字被收录了进去挤占位置。特别的,你也可以使用UIF来hook字体来避免安装字体这一步骤

——我经常使用的UIF字体hook设置
但其兼容性……emmm,难说。
所以我经常使用士佬(2DFan ID @ALyCE)写的FontChanger。不过FontChanger默认调用的是系统字体,所以最好不要用和系统内已有字体重名的字体,最好把字体用FontCreator改个名。然后最好也不要用winmm劫持,谁知道在别人的电脑上会劫出什么问题,没有exe校验的话最好能重建导入表最好重建导入表,或者写个Loader用Detours,这在HexRays的账号中有教,也是我们之后要讨论的,如果你现在还看不懂,那么使用winmm.dll劫持当然也是可以的。
另外,网盘里的字体替换工具同样也是士佬写的,但那个是动态生成字典,甚至可以说相当于给文本加密了一遍,所以我个人并不是很喜欢用,原理和FontChanger大同小异。
至于封包……有些引擎,你直接把脚本文件丢到根目录它就能直接读取,有些则需要你保持目录结构或者只能读取封包,还得具体引擎具体看。在确认引擎读到你更改完的脚本后,再c通一条线看看还有没有什么bug基本就算是测试完成了。