前期分析见:https://www.chinaavg.com/read.php?tid=12966 ^% \# t+ R. Q8 S1 e, a
- Q5 y1 q; { N& q
解包后得到的messages.txt 即为字幕文件+ o8 L" R: ?+ N4 S
: T* E5 a) ?" k
看起来似乎比较乱,实际上字幕存放地非常工整) u' C' ^8 A" p4 Q. J9 Z( {3 K
# W% ?& L: O- \* Q8 r3 _1 e+ M
把文件中每一个0x0A替换为0x0D0x0A即回车符后,即可得到整齐的文本
- F4 G6 s8 r- x2 y例:- # ----------------------------
- # Common dialog texts
- # ----------------------------
- # Start Again dialog
- SAD_MainText Do you want to continue your saved game?
- SAD_Title Adventure
- SAD_Continue Continue Game
- SAD_StartNew Start New
- SAD_Cancel Cancel
- # Select Player dialog
- SPD_SelectPlayer Select Player
- SPD_Select Select
- SPD_Cancel Cancel
- SPD_Delete Delete
- SPD_CreateNew Create Player
- SPD_DeletePlayer Delete Player
- SPD_BtnConfirmDelete Delete
- SPD_BtnCancelDelete Cancel
- SPD_ConfirmDelete Are you sure you want to delete this player?
- # Create Player Dialog
- CPD_EnterYourName Please enter your name
- CPD_CreatePlayer Create Player
- CPD_OK OK
- CPD_Cancel Cancel
复制代码 字幕中,#后面的是注释,每一句前面是变量名,这些都是不用翻译的。因此在导出时,每一句导出两遍,句间留空行,如:- 360 19 MMPlay Start Game
- MMPlay 开始游戏
- 380 13 MMExit Exit
- MMExit Exit
- 394 18 MMOptions Options
- MMOptions 选项
- 413 28 MMChangePlayer Change Player
- MMChangePlayer Change Player
- 442 34 MMCurrentPlayer Current Detective
- MMCurrentPlayer Current Detective
- 0 0
复制代码 每一句前面的数字是该句字幕在原文件中的偏移量和长度。 x( n5 J/ \* b
翻译的时候就如上直接在第二行上修改即可,方便上下对应,注意翻译后字幕不能大于原字幕长度。
; I) J, i- Y0 v9 p1 |) H: m翻译时写入的是utf-8字符。检验方式:写入中文后保存,用16进制编辑器打开,如前三个字节为16进制的 EF BB BF 即说明是utf-8. f! U2 f1 O- b7 F, o
; O$ K. K/ a$ }$ ?- v! H& |————————————————————————————————————————————
0 e- s0 K* |, }/ K" k/ O工具使用方法:
4 t, [" V$ u/ G5 j1,字幕导出工具6 a+ a# G* U7 t; U' C' _
命令行下:scan <InputFileName> <OutputFileName> <y or n>: W, ?: e; n i
第三个变量表示是否按翻译模式导出,输入n则如上面第一段,输出工整的原始字幕,做参考。' q" o/ A5 K/ l2 _8 K' n
输入y则如上面第二段,做翻译用。
5 y: F, e7 b' a: h8 \例:scan Messages.txt input.txt y
2 s4 y, h9 ]' T7 A* k0 p' X7 a
, u$ ^) m! p! k, d+ a2,字幕回写工具
6 Z+ h$ W3 w: m4 q; S0 U+ g+ `. S4 [命令行下:trans <InputFileName> <OutputFileName> <OriginalFileName>
( w. g; _3 O& S6 u6 @+ `第三个变量是原始文件,默认就是Messages.txt |