马上注册领取绝版勋章
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 FlyDut 于 2022-8-19 23:03 编辑
写这篇教程的原因,是最近某老滚Q群里跟网友聊天。该网友有比较丰富的汉化经验,也在某汉化群待过一段时间。所以我了解了他是如何汉化脚本的,他仅仅通过xTranslator的识别和语感判断哪些文本应该被翻译,这样的工作虽然能完成大部分的脚本汉化,但是容易导致错翻、漏翻的情况,甚至是产生一些bug(我甚至是发现因为套用旧版汉化,而出现了bug的传承),因为这样的问题并不少见。但是从与他本人的交流中可以看出,大部分汉化新人,甚至是一些汉化老手都是如此,这就让我多少感到意外。
而xTranslator的识别只能简单的筛选,如果稍有不注意,错误就非常容易出现。当然我很明白老滚中文教程稀少,所以容易踩坑。所以我没花多大功夫就写下这个教程,供大家学习和参考,如有不足请多指教。教程的目的很明确,就是如何准确汉化的脚本。所以不会教阅读者怎么使用xTranslator,阅读者应当对本工具先有基础的了解(论坛本身还是有很多不错的xTranslator基础教程)。
首先载入pex文件。我这里使用私密装置的脚本做一个示范
可以看到,载入脚本后,通过xTranslator的【反编译脚本】功能。
我们可以查看到脚本的反编译代码,同时支持点击词条快速跳转至对应的代码。
这可以非常方便的帮助我们查看词条的使用方式。
并且对于以往摸棱两可的词条,我们也可以通过查看反编译脚本,找到适合的翻译。比如以下例子
哪怕是你对于代码并不熟悉,但是通过一些简单的辨识,也可以看出【lost】和 【restraint keys】是同一句话里的,而不是独立两个单词。
这同样适用于那些大量拼接的起来的语句,我们可以通过该方法找到合适的语序。
但是如果要是我真的一点代码都不会,那么该怎么办呢?其实也非常简单,可以和经验稍微结合一下。
一般来说长语句,都是描述性话语,做为重要参数传递是很难见到的,比如下列这种可以放心翻译。
但是还有一些长语句,比如输出到控制台或者保存到日志文件中的语句,玩家在游玩过程中不会感知到,所以无需翻译。比如下列句子
【而且原则上其实不该翻译,因为如果你需要向原作者寻求帮助、反馈问题,日志文件是少不了的,翻译成中文后反而可能不好反馈问题】
这类语句通常的格式是 debug.trace() ,作用是输出到日志文件,它们不需要被翻译。
此外还有 MiscUtil.PrintConsole(),用于将消息输出到控制台中。
相应的能被玩家感知的信息,常用的有
debug.notification() 作用是在屏幕右上角给出几秒钟的提示信息
debug.messagebox() 作用是在屏幕正中间弹出一个通知窗口
一些mod作者还可能将以上方法封装起来,这样的目的是可以通过mcm菜单的选项进行控制显示。我们同样可以快速辨别,比如下列句子
作者使用了一个自定义的 notify() 方法,但是这个是一个长语句,同时这个方法名【notify】非常简单直白。
这个方法是用来进行消息通知的,所以这样的句子正是我们需要翻译的。
如果你以前恰好学习过一些其他编程语言,虽然你可能并不熟悉papyrus,但是通过对照源代码(一般会在script/source下)。这也可以帮助你快速理解作者自己封装的方法。
比如我们跟着这条语句,找一下背后调用的方法。
虽然教程简单,但是正是简单的方法能基本防止不必要的翻译导致的错误出现,希望可以帮助有需要的人。
|