前期分析见:https://www.chinaavg.com/read.php?tid=12966# _5 j6 P0 Q- G/ w! \* q
3 v( Z8 A- ?9 i" }: S* A# J解包后得到的messages.txt 即为字幕文件! z6 D; q; A1 s; \7 v& W. q. b
8 W, s3 Z$ e7 N4 |看起来似乎比较乱,实际上字幕存放地非常工整
+ V/ \/ ^+ F2 f* _; k9 ~0 z3 @, t$ J
把文件中每一个0x0A替换为0x0D0x0A即回车符后,即可得到整齐的文本
$ R* e3 m% E! u" J3 d4 [( t# M例:- # ----------------------------
- # 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
复制代码 每一句前面的数字是该句字幕在原文件中的偏移量和长度。
$ p7 ?/ z' E( h8 V翻译的时候就如上直接在第二行上修改即可,方便上下对应,注意翻译后字幕不能大于原字幕长度。
9 e# Q& [( X4 _/ w3 L* y0 G翻译时写入的是utf-8字符。检验方式:写入中文后保存,用16进制编辑器打开,如前三个字节为16进制的 EF BB BF 即说明是utf-8
8 A+ ^; R* ?1 W- V' y1 m4 c( |* x, k0 Q$ `
————————————————————————————————————————————
5 @- Z* f2 ^- f" F6 ?2 N" @工具使用方法:
2 z% J6 v5 \4 `( O: o4 Q3 A1,字幕导出工具/ s; k* ]6 T6 i: U4 Y- `$ ^
命令行下:scan <InputFileName> <OutputFileName> <y or n>5 k% a% [& U; y, i( p
第三个变量表示是否按翻译模式导出,输入n则如上面第一段,输出工整的原始字幕,做参考。
) R! `$ Y* P% z8 U2 j, u; s输入y则如上面第二段,做翻译用。
1 C- W0 O2 L+ v例:scan Messages.txt input.txt y- V0 v% e. `$ V
! G4 G9 F7 Y2 y* V8 @" g2,字幕回写工具
' P, k7 x; l6 p7 j/ j* t命令行下:trans <InputFileName> <OutputFileName> <OriginalFileName>: g4 J6 d) B: h' l3 W( h
第三个变量是原始文件,默认就是Messages.txt |