Translate-Subtitle-File
Translate-Subtitle-File copied to clipboard
对ass字幕中的\N处理有缺陷
ass字幕中的\N表示换行,很多长句会使用这种方法分成多行显示。但软件没有正确处理它,直接将其当作普通文本处理了,导致翻译结果混乱。 建议在翻译前将\N替换成空格,得到翻译结果后再根据语句长度自动分行。 不建议将每行文本单独翻译,因为多行字幕可能是一整句话,拆开翻译结果会不准确。
目前全都是批量(多行)一起翻译的。所有服务商都是。 比如一批最多2000个文字(每个服务商略有不同,基本都在2000-4000左右), 软件会一行一行的算,比如从第1行到第30行字幕差不多凑齐2000字了,就当做是一批,中间用 \n 作为行分隔符,发给服务商。 翻译完成回来之后,又根据 \n 分割回一行行,对应原文的一行行。
早期这个软件可能 1.x~3.x 版本的时候(我不记得了具体哪个版本了,实在想找可以翻 changelog)。 只有腾讯云这一家是一行一行翻译的,因为那时候腾讯云不支持,你发 \n 过去,回来的 \n 数量不对。 后来腾讯云也升级了,支持多行,我也跟着升级了软件,之后全部翻译服务商就都支持多行了。
我建议你先确保软件是最新的4.1.0(目前2021-9-25 字幕组机翻小助手(英文名 tern) 的最新版是 4.1.0)
如果要测试的话: 随便选一个服务商比如百度。 在 ASS 里面挑选3行(5行也行,随你)包含 \N 换行符的字幕。 手动合并成一段话,原先的3行之间用 \N 分割,行内的 \N 替换成空格。
然后和软件的翻译结果对比。按理来说,翻译结果应当是一致的,因为软件也是这么处理的。
简而言之:目前就是按你说的做的,行内的 \n 会换成空格再发给服务商。 之所以换成空格是因为每次翻译是多行一起翻译(一起的意思就是把多行拼成一整段连续的),一行行翻译不但正确率低而且太慢了。 为了拼成一整段话,行之间用 \n 隔开,服务商返回的时候也是同样数量的 \n,这样才能切割成一行行。