假定一个英文MOD名为:test mod
MOD的路径为
x:\Program Files\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\Mods\test mod
路径 test mod\Assets\Python 目录存在,并且下面有子文件夹或者*.py文件。
汉化分要两步,“固定修改”与“见错再修”
固定修改
要修改的文件有9个,分别为:
CvEventManager.py, CvUtil.py, CvAppInterface.py, CvOptionsScreenCallbackInterface.py, CvWBDesc.py , CvInfoScreen.py, CvMainInterface.py, CvOptionsScreen.py, CvWorldBuilderScreen.py
主要是为了适应utf-8,位置配合等,要手改就参考汉化包的相同文件。
作为前人,我以经写好程序来处理了,下载:[MOD工具]BTS 3.19 英文版改 3.19 汉化/日文版
运行后,转到“Python”页,你会看到有个框,把test mod\Assets下的Python文件夹直接拉到框内,放手,程序就会检查是相应的文件是否存在
存在就会列出来,你只面要点“修改”按钮,一下就完成了。
见错再修
这个和MOD的作者如何编写有关,要处理的对象不是固定的,我们的目的是汉化,不是重修,所以等他报错再研究是最好的办法。
首先要让游戏会报告Python执行错误
打开“我的文档\My Games\Beyond the Sword\CivilizationIV.ini”
HidePythonExceptions = 0
LoggingEnabled = 1
找到他们,并改成写出来的值。
现在只要Python执行出错,游戏就会有错误提示框,并且记录日志。
Python错误记录在“我的文档\My Games\Beyond the Sword\Logs\PythonErr.log”
根据错误提示的行数自己跟踪一下相关文件的位置。
汉化时Python的主要错误归根到底只有一个,超出256个ASCII,这时需要根据情况用
CvUtil.convertToStr(sText)
CvUtil.convertToUnicode(sText)
这两个函数来处理一下,其它问题有可能是语言的数组,总之一般程序猿看几下就明的了。
最后,可能会有一些直接输出英文,而不是以"TXT_KEY_XXXXXX"的形式输出,你要修改一下成
CyTranslator().getText("TXT_KEY_XXXXXX",())
这种标准(自认为)的形式。