我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接:Trae下载地址
个人比较喜欢玩《文明时代》这款游戏,在翻创意工坊时发现有人用俄语开发了一个魔改版,下下来发现仅支持俄语。
翻了一下项目发现游戏的语言设置都保存在Bundle.properties文件中,只需要将=号右边翻译成中文就可以了。看起来挺简单,用py写了段脚本,跑了一下,启动游戏发现并不如意,让我们看看Trae能不能帮忙解决一下。
先尝试跑一下之前的脚本
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)
发现报错:
解决报错:
2.27日更新Trae为最新版后解决报错
运行结果:
和之前在VSCode上跑的一样,已经将=号右边翻译成中文,但是启动游戏后,文字并不能正常显示出来。下面开始结合Trae解决该问题。
着手解决问题
在运行代码时发现,翻译用时太慢。我们让Trae帮忙优化一下,Trae给出了多线程方案,复制到trans_bulk.py中即可直接运行,速度的确提高了不少!
我先试了一下将游戏的开始页面翻译成英文,发现可以正常显示。改为中文,不显示。大概是charset出了问题。先将游戏文本全部翻译成英文,启动游戏点一点,看看有没有莫名奇妙的bug,如果没有,当前的问题就只有如何让游戏支持显示中文。
使游戏支持中文
要使项目支持中文,必然要对整个游戏项目进行分析。我们将整个项目作为引用,问一下AI。
注意在此之前要构建一下索引
根据AI的回答和已有其他mod的汉化项目作为参照,我们尝试做如下修改
我们还是将首页先修改成中文,启动游戏观察一下情况,可以看到首页的“开始游戏”已经可以正常显示。
我们在将Bundle.properties全部翻译成中文之前,先让Trae给脚本加个进度条,方便查看进度。
Trae完美的完成了这个任务,代码直接复制就可完美运行,我要失业了!(大悲)
启动游戏,游戏完美支持中文。(还有一些机翻味重等问题后续慢慢解决)