为什么这回非得动这个汉化?

兄弟们,这回搞《梦幻假日岛》的安卓汉化,起因特简单,但也有点气人。这破游戏以前只有日文版,我一个朋友,就是那种嘴特碎的老油条,跟我打赌,说这年头没人能自己手工汉化一个商用手游了,都是机翻或者直接找成品。他丫的原话是:“你现在只会用那几个破工具看个代码,真动手你就是个废物。”

我当时就火了。我这人脾气就这样,你越说不行,我越要给你办成。我立马就去抓了那个日版的 APK。这项目,纯粹就是为了争一口气,给我那朋友看看,老子这技术还生着。

动手前的准备和第一脚油门

我把那最新的日版 APK 搞到手,先用我那台老古董笔记本开工。用的家伙事儿真没什么新鲜的:

  • MT管理器,负责解压和替换文件,全靠它拆包。
  • 小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区

  • 一个叫 Apktool 的工具,用来反编译和重编译 DEX 和资源文件。
  • 电脑上装的 Python 环境,写了个小脚本,专门用来批量处理文本编码问题。

我以为文本资源会老老实实地藏在 assets 或者 res 文件夹里。屁都没有。游戏厂商现在都精得很,根本不按规矩出牌。我翻了半天,发现主要的文本字符串被塞进了一个 lib 目录下的一个巨大的、命名混乱的文件里,后缀都不是常见的 XML 或者 JSON,看着像是个自己魔改的二进制文件。

过程中的那些烂事,真他妈想砸电脑

找到文件只是第一步。我用十六进制编辑器打开它,里面像一锅煮烂了的粥,全是乱七八糟的字符。我判断出它是用某种特殊的 Shift-JIS 编码格式存储的,但外面套了一层简单的加密壳,就是那种最恶心人的异或操作。

我花了一整晚,不断试各种秘钥,才把第一段文本给扒拉出来。确认解密方法后,我用Python写了个不到一百行的垃圾小脚本,专门用来批量解密和把日文转成中文文本。这块儿干得真是费劲,眼睛都快瞎了。

更恶心的事情发生在回编的时候。当我把所有中文文本塞回去,用 Apktool 重新编译,然后用 MT管理器一键签名,装到测试机上。

点开游戏,直接闪退。

那一下午,我试了不下十几次。每一次闪退,都得从头开始查日志,从日志里抠那几个报错代码。发现,他妈的不是代码的问题,是中文的字符宽度比日文大得多。这个老游戏在设计时,给文本区域留的空间太小了,我塞进去的中文句子稍微长一点,它就溢出了,游戏直接嗝屁。

当时真气得我把手机往床上一扔,我那朋友的嘴脸在我脑子里晃悠。我没办法,只能对着汉化文本进行二次精简,把很多口语化的长句子,硬生生压缩成了跟发旧社会电报一样的短句,能少一个字绝不多写一个。这又花了我半天时间。

最终成果和那口争来的气

熬到第三天凌晨三点,我终于把所有文本都缩短到能被游戏引擎接受的长度,然后重新编译、签名、安装。

这回游戏终于流畅运行了。从开场动画到新手教程,界面上的所有文字都规规矩矩地显示着我翻译的简体中文。虽然翻译得有点粗糙,有些地方甚至还带着我气急败坏下的错别字,但这玩意儿,能玩了!

我把这个汉化版丢给我那朋友,没说一句话。第二天他给我发了个表情,意思是“牛逼”。那感觉,比我当初拿到年终奖还痛快。我立马回了他一句:“老子只是不想用那几个破工具看个代码。”

这回的实践算是彻底记录完了。以后再搞这种老游戏的汉化,我得先找个专门的工具分析文本框大小,不然这种硬着头皮去撞墙的感觉,真的受够了。

免责声明:喜欢请购买正版授权并合法使用,此软件只适用于测试试用版本。来源于转载自各大媒体和网络。 此仅供爱好者测试及研究之用,版权归发行公司所有。任何组织或个人不得传播或用于任何商业用途,否则一切后果由该组织及个人承担!我方将不承担任何法律及连带责任。 对使用本测试版本后产生的任何不良影响,我方不承担任何法律及连带责任。 请自觉于下载后24小时内删除。如果喜欢本游戏,请购买正版授权并合法使用。 本站内容侵犯了原著者的合法权益,可联系我们进行处理。