我的分享记录,就从我这个人最近的“无所事事”开始说起。人闲下来总要找点事情做,不然感觉这个生活都空了。前段时间我在一个犄角旮旯里翻出了一个挺老旧的安卓游戏,名字就叫《永恒不再》。画面,风格,很对我胃口,但是一看里面的文字,好家伙,全是洋文。一个字都看不懂,这怎么玩?硬着头皮玩了几分钟,完全是瞎子摸象,气得我直接把手机扔了。
搞事前的碎碎念:看不懂就自己干
我这人就是有这个怪脾气,越是看不懂,越是想弄明白。当时一拍大腿,干脆自己动手汉化它!虽然我知道现在网上各种汉化组一大把,但那个感觉不一样,自己动手丰衣足食,那是对自己的一个交代。反正最近也没啥项目在身,就当是找点乐子,活动活动我的“老胳膊老腿”。
我一开始想得太简单了。不就是把APK文件解包,找到里面的文本文件,然后扔给翻译软件,再打包回去吗?听起来就像周末在家炒个小菜一样轻松。
开干:工具准备与第一脚泥
-
小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
第一步:提取文件。
我想办法把那个游戏的APK文件给抠了出来。然后祭出了我以前常用的那个处理安卓包的“小工具”。这东西好用,能把一个光溜溜的安装包,给你变成一个文件夹,里面代码和资源文件分得清清楚楚。我一上手,就直奔那个叫
res的资源文件夹去了。经验告诉我,那些界面上的文字,按钮,应该都藏在里面的这类文件里。 -
第二步:浅层翻译。
我打开,好家伙,密密麻麻的文本。我也不管三七二十一,吭哧吭哧地用一个在线翻译工具把上百条文本全都替换成了中文。翻译完了,心想这下稳了,然后让那个小工具给它重新打包,签名,安装,一气呵成。
第一次的打击:半吊子汉化与心魔
安装完,我赶紧点开了游戏。一进游戏,菜单界面果然全变成中文了!我当时那个得意,心想这不就搞定了?结果我一点开始游戏,傻眼了。所有的对话、剧情、物品描述,所有游戏的核心内容,依然是那串看不懂的洋文!我翻译的那些,只是些“开始游戏”、“设置”、“退出”之类的边角料。大头,根本没动!
当时真是气得我想摔手机。这不就是白费力气吗?这跟我当年在老东家对着一个没人动的老旧代码库一个德行。那时老板非要我用一个淘汰的技术栈去修一个核心BUG。我吭哧吭哧搞了一个月,搞定了,结果?给我穿小鞋,说我浪费时间。还当着所有人的面,说我没有“大局观”。现在那老板的公司都快散伙了,我?在这儿给自己翻译游戏。
这股不服输的劲儿又上来了。我这人就是这样,越是难搞,越是要搞!我绝不能让一个破游戏程序给难住!
深入腹地:Smali与真正的较量
我明白过来了,那些核心的对话内容,肯定不是放在好找的资源文件里,而是硬生生写死在程序代码里面的。安卓的程序代码,经过反编译后,大部分都是那个叫Smali的东西,看着像汇编,实际上是Dalvik虚拟机的字节码。这东西,我以前打交道真不少,但每次见它,都头皮发麻。
我开始往那些Smali文件里钻。代码块里,我眯着眼睛,一行一行地搜寻那段洋文。终于,在一个巨大的逻辑文件里,找到了线索!那些故事文本,就藏在.string或者各种const-string的声明里面。它们被程序逻辑直接调用,绕过了资源文件。
这回我不敢马虎了。我非常小心地把每一段故事文本“抠”出来,翻译成中文,然后替换回去。替换的时候,最怕的就是编码问题和长度问题。一旦中文的编码或者字符串长度变了,很容易让代码跑飞。我每翻译完一个关键文件,就赶紧打包测试一下,确保游戏能正常启动,对话逻辑没错乱。
那个过程,真是体力活,连续搞了快三个晚上,眼睛都快贴在屏幕上了。我甚至还学会了怎么去避开一些跳转逻辑,只替换文本,不影响代码的执行流程。这比当年写代码还累,因为你是在别人的“房子”里,小心翼翼地搬砖。
完工与收尾:成果与心得
终于,我觉得大部分的核心文本都被我替换完了。一次,我重新打包,签名,过程异常顺利。安装完,我怀着激动又忐忑的心情再次打开《永恒不再》。
这一次,彻底成功了!从头到尾,所有的剧情对话、物品说明、甚至NPC的碎碎念,全部都变成了我看得懂的简体中文。那种感觉,真的是无与伦比的。不是说省了多少钱,或者得到了多少人的赞扬,而是那种“我做到了”的纯粹满足感。
玩着这个自己亲手汉化的游戏,感觉就是不一样。这可能就是我们这些“爱折腾”的人,一直坚持下去的动力。不为什么,就为那份纯粹的执拗和完成后的喜悦。
所以说,有的时候生活就是这样,你觉得不可能,你觉得太麻烦,但你只要静下心,一步一步,从头到尾把它啃下来,的结果,一定会让你觉得之前的辛苦都是值得的。这回的《永恒不再》汉化记录,分享完毕。

