冒险解谜游戏中文网 ChinaAVG

标题: CSI:NY 字幕导出回写工具 [打印本页]

作者: 深绿    时间: 2010-2-26 14:43
标题: CSI:NY 字幕导出回写工具
前期分析见:https://www.chinaavg.com/read.php?tid=12966/ }4 c4 i& [) q' X

" _3 P1 S, x( O0 s( P+ M# ^解包后得到的messages.txt 即为字幕文件
4 w$ r$ G# w( f  ]2 W4 L' B( B( m: a. Z% o9 [* M
看起来似乎比较乱,实际上字幕存放地非常工整3 v+ {. [; b6 K. }. ]+ w
6 ]( |- b) N- q4 h8 t( R
把文件中每一个0x0A替换为0x0D0x0A即回车符后,即可得到整齐的文本/ l: ]* q2 @+ O: M+ K: Y. }! f
例:
  1. # ----------------------------
  2. #  Common dialog texts
  3. # ----------------------------
  4. # Start Again dialog
  5. SAD_MainText    Do you want to continue your saved game?
  6. SAD_Title        Adventure
  7. SAD_Continue    Continue Game
  8. SAD_StartNew    Start New
  9. SAD_Cancel        Cancel
  10. # Select Player dialog
  11. SPD_SelectPlayer    Select Player
  12. SPD_Select        Select
  13. SPD_Cancel        Cancel
  14. SPD_Delete        Delete
  15. SPD_CreateNew        Create Player
  16. SPD_DeletePlayer    Delete Player
  17. SPD_BtnConfirmDelete    Delete
  18. SPD_BtnCancelDelete        Cancel
  19. SPD_ConfirmDelete        Are you sure you want to delete this player?
  20. # Create Player Dialog
  21. CPD_EnterYourName    Please enter your name
  22. CPD_CreatePlayer    Create Player
  23. CPD_OK                OK
  24. CPD_Cancel            Cancel
复制代码
字幕中,#后面的是注释,每一句前面是变量名,这些都是不用翻译的。因此在导出时,每一句导出两遍,句间留空行,如:
  1.      360      19 MMPlay            Start Game
  2.                  MMPlay            开始游戏
  3.      380      13 MMExit            Exit
  4.                  MMExit            Exit
  5.      394      18 MMOptions        Options
  6.                  MMOptions        选项
  7.      413      28 MMChangePlayer    Change Player
  8.                  MMChangePlayer    Change Player
  9.      442      34 MMCurrentPlayer        Current Detective
  10.                  MMCurrentPlayer        Current Detective
  11.        0       0  
复制代码
每一句前面的数字是该句字幕在原文件中的偏移量和长度。
8 M4 v  _# G$ P/ _; P7 L, t翻译的时候就如上直接在第二行上修改即可,方便上下对应,注意翻译后字幕不能大于原字幕长度。
3 A$ Z/ e8 U% [0 K5 j翻译时写入的是utf-8字符。检验方式:写入中文后保存,用16进制编辑器打开,如前三个字节为16进制的 EF BB BF 即说明是utf-8
  u" B' I. W4 Q( I7 m! q  V5 N( V! v* G7 R. M3 A% x
————————————————————————————————————————————
* O; w. D8 `; R2 e+ Z5 @5 ?工具使用方法:/ m7 Y  }% T7 t: H6 s% B4 v
1,字幕导出工具" A  w, V. x3 k5 ~6 h; {8 U
命令行下:scan <InputFileName> <OutputFileName> <y or n>
$ U. o: R2 m2 ]7 v; L第三个变量表示是否按翻译模式导出,输入n则如上面第一段,输出工整的原始字幕,做参考。
2 N* F5 ?9 `4 f输入y则如上面第二段,做翻译用。- A% B" \2 [7 q9 ?+ ^3 b
例:scan Messages.txt input.txt y$ T" _* M4 |' g; ~0 C. l7 u
1 X- {0 L$ V& ]0 s. t; u
2,字幕回写工具1 B) U+ i2 ^/ G2 _9 _$ _
命令行下:trans <InputFileName> <OutputFileName> <OriginalFileName>
8 K9 u/ G2 w4 T. T7 y5 r, K9 P( G第三个变量是原始文件,默认就是Messages.txt
作者: shane007    时间: 2010-2-26 17:21
深绿你好,真是不好意思,我发现我在QQ和你聊的时候,由于同时和别人在讨论问题。8 m# W- e; T' n, c0 C9 [
所以错误地回答了你的提问。这个messages.txt ,我感觉直接编辑就行了吧。- q7 x8 ]/ B; ]1 U
9 f0 Q6 g* {9 \3 ]! M/ B
我的本意并不是这个,而是要你做个包文件的打包器。' l5 L. ]% T. Y% ]1 |) K# [& _
由于包文件带有zlib压缩,所以需要用到packzip等工具。不知道你是否明白了我的意思?* _9 M4 d, _2 i
不明白的话,我把它详细地写出来。
作者: shane007    时间: 2010-2-26 17:23
不过,你的工具也许比直接编辑更加方便。
作者: 深绿    时间: 2010-2-27 00:03
哦......我说呢...messages.txt的确可以直接编辑...& `0 |$ }( S& w# p* J: J( i
/ f  L8 V0 ]5 _9 u
那么就是需要个打包器吧...) _( A( t7 I  Y; l

- z* z  f& J7 i1 w根据解包器解包出的文件,可以看到,基本上是一些资源文件,加上一个table.bin就是文件名表
' ~6 a9 f/ e3 K+ ^. m然后zlib压缩后打包在一起' j- V. J0 \/ q  X$ B: M
table.bin里面存放了每一个资源文件的实际大小(压缩前)、包文件中偏移量。
4 P* s& M  @! Dtable.bin本身则是压缩后存放在包文件最后。
1 J% T' ^. ?' X# h4 }. s/ r3 v6 q
那么要进行打包,如果文件大小不变,就很简单,例如messages.txt里改几个字符,用packzip打包回lang_en.dat,替换掉就可以正常显示,改中文因为没有对应ttf字体文件,所以显示的是方块。# w7 |% X2 d- Z

/ D+ |0 Z/ R# r1 G如果大小改变,就比较麻烦,一来table.bin里面要修改相应的偏移和大小,二来用packzip打包回去时输入的偏移也会变化。
+ T2 |% ?& n- @) v我先手动处理一下试试。
, Y7 K2 l( c; L- K, o+ Y' F: W+ g* M8 {; Z' j# v
另外,那个解包器有没有源代码?
作者: shane007    时间: 2010-2-27 09:31
对,就是要制作一个打包器。 ; t6 \4 |# C, F6 O, d# n
messages.txt的文件大小肯定是要改变的,即使我们能控制翻译后的messages.txt的文件大小不变。但是packzip打包为zlib块以后,这个块的大小我们也没法控制啊。table.bin里面应该有压缩后的zlib块的大小的。所以说,修改table.bin估计是免不了的了。 ' i. R) Z3 ?  q2 t2 A3 s) Z
解包器没有源代码。老外的msn我有,你可以问问他看。[email protected] + H4 i" B" t1 c/ U) ]
原贴在这里, 9 r" M! H: Y, ]
http://forum.xentax.com/viewtopic.php?f=10&t=3231$ a: H3 u' V* h. K2 B+ n( p
: Z' T; L" P8 D' |9 @8 E
你现在要做的就是分析一下table.bin的结构,研究如何修改,及打包回去做出和原来一样的包文件。4 V4 t2 B0 y* q! I3 i: g' q
包里的单个lib块可以用packzip打包,或自己用zlib库函数写。
作者: shane007    时间: 2010-11-29 22:30
再顶上来 3




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2