TeaCon 茶后谈第 423 期
屏幕前的读者大概率已经熟悉了基于语言文件的模组汉化,也许还知道现在的语言文件是 JSON 格式的。如果对 1.12.2 及以前的 Minecraft 版本有所了解,还可能知道彼时的语言文件是所谓的「lang」格式的,本质上就是等号分割的键值对。但再往前呢?在「茶后谈#414」中我们提到过,早期的模组开发者对国际化和本地化并不十分重视,而其另一种表现,便是「直接把玩家看到的文本全部写死在代码里」。有鉴于 Minecraft 的模组和 Minecraft 本身一样,也是基于 JVM 的,所以早期的汉化工作者们还是可以通过「直接编辑 class 文件,把写死的文本全改成中文」的方式来实现汉化,是为俗称的「class 汉化」。下图展示了使用 Recaf 反编译后的汉化版达特工艺(DartCarft)Beta 0.1.20 文件,可发现写死在代码中的中文文本。但这种汉化方法天然要求汉化者本身就有一定技术水平,否则稍有不慎即会令模组文件损坏;同时,修改 class 文件这个行为也有潜在的著作权(版权)方面的争议;此外,在代码层面直接修改也无助于解决「同时支持多种语言」的问题。随着 Minecraft 1.6 正式引入「资源包」概念,并将语言文件纳入资源包体系下,模组的翻译工作也逐渐走出了「茹毛饮血」的时代。【本期编辑:3TUSK】