使用Trae + Python实现对游戏的汉化

388 阅读3分钟

我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接:Trae下载地址

个人比较喜欢玩《文明时代》这款游戏,在翻创意工坊时发现有人用俄语开发了一个魔改版,下下来发现仅支持俄语。

翻了一下项目发现游戏的语言设置都保存在Bundle.properties文件中,只需要将=号右边翻译成中文就可以了。看起来挺简单,用py写了段脚本,跑了一下,启动游戏发现并不如意,让我们看看Trae能不能帮忙解决一下。

image.png

先尝试跑一下之前的脚本
import translators as ts

def translate_properties_file(input_file, output_file):
    with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', encoding='utf-8') as outfile:
        for line_number, line in enumerate(infile, start=1):
            print(f"Translating line {line_number}...")
            line = line.strip()
            if '=' in line:
                key, value = line.split('=', 1)
                try:
                    translated_value = ts.translate_text(value,from_language='ru',to_language='zh')
                    outfile.write(f"{key}={translated_value}\n")
                except Exception as e:
                    print(f"Error translating line {line_number}: {e}")
                    outfile.write(f"{key}={value}\n")
            else:
                outfile.write(line + '\n')
        print(f"Translation complete. Output written to {output_file}")
# 使用示例
input_file = 'd:/Cruel Ages II/Cruel Ages II/game/languages/civilizations/Bundle.properties'
output_file = 'd:/Cruel Ages II/Cruel Ages II/game/languages/civilizations/Bundle_zh.properties'
translate_properties_file(input_file, output_file)

发现报错:

image.png

解决报错:

2.27日更新Trae为最新版后解决报错

运行结果:

image.png

和之前在VSCode上跑的一样,已经将=号右边翻译成中文,但是启动游戏后,文字并不能正常显示出来。下面开始结合Trae解决该问题。

着手解决问题

在运行代码时发现,翻译用时太慢。我们让Trae帮忙优化一下,Trae给出了多线程方案,复制到trans_bulk.py中即可直接运行,速度的确提高了不少!

image.png

我先试了一下将游戏的开始页面翻译成英文,发现可以正常显示。改为中文,不显示。大概是charset出了问题。先将游戏文本全部翻译成英文,启动游戏点一点,看看有没有莫名奇妙的bug,如果没有,当前的问题就只有如何让游戏支持显示中文。

image.png

使游戏支持中文

要使项目支持中文,必然要对整个游戏项目进行分析。我们将整个项目作为引用,问一下AI。

注意在此之前要构建一下索引

image.png image.png

根据AI的回答和已有其他mod的汉化项目作为参照,我们尝试做如下修改

image.png

我们还是将首页先修改成中文,启动游戏观察一下情况,可以看到首页的“开始游戏”已经可以正常显示。

image.png

我们在将Bundle.properties全部翻译成中文之前,先让Trae给脚本加个进度条,方便查看进度。

image.png

Trae完美的完成了这个任务,代码直接复制就可完美运行,我要失业了!(大悲)

image.png

启动游戏,游戏完美支持中文。(还有一些机翻味重等问题后续慢慢解决)

image.png