loneprison 发表于 2024-3-23 15:15

QT5写的软件汉化后,乱码/丢失的解决方案实操

虽然这个教程并不完全算我原创的,但是介于我几经查找也没在网上找到相关关键字的帖子,因此在这边留档个关键字正确的技术贴
首先有关原理方面,其实站内是有一个帖子的,但是你肯定不可能对一个几百个词汇的软件逐个操作
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1201238&highlight=QT5

后来几经波折找到了个专门汉化软件的群,问了大佬,给说了个关键字后,在b站找到了个实际操作过程的视频
https://www.bilibili.com/video/BV1RN4y1n7ey

因此这个帖子实际上就是对这个视频的总结


↓↓↓正片↓↓↓


首先我这边用的是passolo2022
有关汉化的其他正常步骤我这边就不在复述了,因为站内站外都有更全面的其他教程
咱们跳到正常操作后的最后一个步骤——输出完成后却发现依然有乱码/文本丢失

原因的话,说结论就是QT5读取字符串会限定长度,所以你还得去改那个引用地址的,和字符串长度相关的字节(见顶层的帖子)

所以我们打开信息,直接跳转到原始字符串的引用地址,因为我找了几个做对比所以我可以直接说结论,选中的这一串就是这个软件里关于这个字串的引用的相关二进制
如果你们自己实操的话还是需要自己去二进制中实际看一下做对比


而关于字符长度在什么位置,可以直接在附近地址找一下原始字串字节长度的字节(要先转二进制),在这个案例中我们可以看到0xBA后面紧跟着0x08,而原始字节长度刚好也是8

既然知道了为什么就可以去解决问题了,首先我们重新回到从源文件提取非标准资源字符串的步骤,打开设置,添加一个新的字串类型配置,做如下配置

(备注,老实说由于我和原视频里的配置一模一样,所以我比较怀疑是不是可以直接抄一下这个配置文件就可以通用在QT5的软件的相关汉化里)

配置完了以后,在字串类型——更多里把配置加进去,然后重新检测一下字串类型(不需要重新提取),最后重新跑一遍导出流程,文本就正常显示了



——————————————————————————————


杂碎念:在找到办法之前我发现软件日语版的字节长度使用远高于中文翻译,所以直接通过改日文的那个版本而不是解决怎么修乱码来解决汉化问题了.....................................................

冥界3大法王 发表于 2024-3-24 08:16

还没看过瘾,就剧终了。观众表示 遗憾。

lzyjue0417 发表于 2024-3-24 15:18

很快啊,就结束了

damengyang 发表于 2024-3-25 08:31

Qt这个软件编程挺好用的

y5230024 发表于 2024-3-25 09:16

Qt感觉坑挺多的,试了一下还是滚回去搞VS了

xqyjlj 发表于 2024-3-25 11:21

y5230024 发表于 2024-3-25 09:16
Qt感觉坑挺多的,试了一下还是滚回去搞VS了

QT确实坑多

jh3skinny 发表于 2024-3-25 15:00

有用,乱码问题各种坑

huaguoshanhouzi 发表于 2024-3-25 17:04

学到了,跟我第一反应字符长度不够一样,遇到乱码问题第一反应就是字符集长度相关

FDL 发表于 2024-3-25 18:20

很好的引路贴,在qt5这个问题上又学到了很多!

ljsans 发表于 2024-3-26 01:00

感谢,我也插个眼,以后用QT多半会碰到
页: [1] 2
查看完整版本: QT5写的软件汉化后,乱码/丢失的解决方案实操