在看完Rust圣经入门部分后的简单小练习。
该工具源于某位大佬写的工具行数标注有问题导致我不敢用他的回封工具,遂写了个将中日文本对照提取成.tsv
文件,然后直接用Emeditor替换。
该工具适用于某Atremis Engine的游戏。
本来是打算看Dir_A佬发布的相关教程的,不过发现脚本格式不一样了,遂作罢。
不过这个引擎确实是比较好解决的那类就是了。
其实写小工具用Rust不能说大材小用,只能说自找麻烦。用其他语言可以写得更轻松更简单,这个程序原本也是由C++完成的,这次只是将其重构。我个人对Rust的理念还是比较有好感的,Rust会在一些地方通过“反直觉”和“显式”的手段强迫开发者面对一些“模棱两可的问题”。我认为Rust的一些理念与C正好相反:C提倡“信任程序员”,默认开发者十分清楚自己的程序会做什么事;而Rust则将一些开发者认为“理所应当”的细节抛回来,强制开发者好好思考程序到底会怎么运行。
当然,写个小工具时思考太多东西只会徒增自己的疲惫,这个工具也只是练手的项目,代码风格较为混沌,希望半年后的自己再看到时可以痛骂现在的自己。
2023/3/25凌晨
修改了输出文本的来源。
在重构前的工具中,输出文本的中文部分和日文部分分别来自翻译文本的译文和日语对照,但是根据组内的讨论得知,不少翻译会因为机缘巧合改动译文,因此重构时修改了日文部分的来源:程序会用第二个参数打开一个仅提取而未经汉化的文本,从中拉取日语原文输出到.tsv
文档中。
2023/3/25下午
修改了对“原文和译文行数不匹配”时的处理方法。
在原程序中,当原文和译文行数不匹配,通过errordeal()
报错并结束程序。但经过测试,行数的变动并不会影响游戏的运行和流程,且很多翻译都改变了译文的行数。
鉴于以上情况,新增了行数不匹配时的处理方案:如果译文行数比原文少,则认为译文对行进行了合并,则将译文缓冲区补充空字符串至和原文缓冲区大小一致;如果译文行数比原文多,则认为译文对行进行了拆分,而Emeditord的批量替换并不允许使用转义符,所以目前的解决方案仍然是通过errordeal()
报错并结束程序,然后手动修改原文使其对应。可能会在下一次更新考虑将中文行合并的方法。