设为首页收藏本站官方微博

汉化工具 CSI:NY 字幕导出回写工具

[复制链接]
查看: 2910|回复: 5
打印 上一主题 下一主题

[汉化工具] CSI:NY 字幕导出回写工具

跳转到指定楼层
楼主
发表于 2010-2-26 14:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

CSI:NY 字幕导出回写工具

前期分析见:https://www.chinaavg.com/read.php?tid=12966! P* W/ ?+ \! h# e  q& p  _: Y0 V
' l! g1 \$ M2 C3 {7 [9 [7 x
解包后得到的messages.txt 即为字幕文件1 p$ c" F1 V' {2 a: ?
1 U  z( Z5 I4 i. `  u4 R( M
看起来似乎比较乱,实际上字幕存放地非常工整
* N% D" J9 R6 ]2 I+ }! h
1 Y, a, V. B7 `0 v把文件中每一个0x0A替换为0x0D0x0A即回车符后,即可得到整齐的文本, P  `/ b, H1 O, G; ?' Z) 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  
复制代码
每一句前面的数字是该句字幕在原文件中的偏移量和长度。: m* K* _9 e) C4 ~2 h8 L2 d* W9 D3 o% A
翻译的时候就如上直接在第二行上修改即可,方便上下对应,注意翻译后字幕不能大于原字幕长度。
1 H. [0 u) D5 Q. P翻译时写入的是utf-8字符。检验方式:写入中文后保存,用16进制编辑器打开,如前三个字节为16进制的 EF BB BF 即说明是utf-8" q& L" V, V  V: p$ A8 X

6 v# D* T+ Y9 L6 V. ^1 N+ \————————————————————————————————————————————
( g- x5 i. z- h8 Z! ]工具使用方法:3 k  ]; U! r3 l1 b9 S
1,字幕导出工具
4 G) p- T3 S, ^# k6 E4 @命令行下:scan <InputFileName> <OutputFileName> <y or n>
( P$ a9 p$ k+ d) k+ N) }第三个变量表示是否按翻译模式导出,输入n则如上面第一段,输出工整的原始字幕,做参考。- W$ d+ [: m6 T; ~
输入y则如上面第二段,做翻译用。
5 [  S1 ]) d- l6 [% I例:scan Messages.txt input.txt y
: b; B) c+ U- n$ ~1 |  t& b! j% ]( \; F$ [, T& q
2,字幕回写工具
5 a# S5 W/ W- w3 c% O( H命令行下:trans <InputFileName> <OutputFileName> <OriginalFileName>4 @  m# |/ Y/ o
第三个变量是原始文件,默认就是Messages.txt

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-2-26 17:21 | 只看该作者
深绿你好,真是不好意思,我发现我在QQ和你聊的时候,由于同时和别人在讨论问题。
* N! g" }& a2 K% h所以错误地回答了你的提问。这个messages.txt ,我感觉直接编辑就行了吧。
, s/ E/ W9 b8 I4 d5 U1 ?$ R' w" c* r4 l
我的本意并不是这个,而是要你做个包文件的打包器。
  P& y* e9 I7 }8 K3 M+ C7 i由于包文件带有zlib压缩,所以需要用到packzip等工具。不知道你是否明白了我的意思?
# v5 }. S: @6 G# J) s不明白的话,我把它详细地写出来。
回复 支持 反对

使用道具 举报

板凳
发表于 2010-2-26 17:23 | 只看该作者
不过,你的工具也许比直接编辑更加方便。
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-2-27 00:03 | 只看该作者
哦......我说呢...messages.txt的确可以直接编辑...  K* S$ j6 }& h
$ t2 M! I. ]+ n! W1 v9 \+ T
那么就是需要个打包器吧...
- L5 U& W7 M+ F' S1 w; d8 D) v6 n9 ^' c; x
根据解包器解包出的文件,可以看到,基本上是一些资源文件,加上一个table.bin就是文件名表
1 D4 n8 C7 y* x  B6 {) g3 w3 L8 H- C3 a然后zlib压缩后打包在一起
4 v0 W, Z$ M9 A2 Utable.bin里面存放了每一个资源文件的实际大小(压缩前)、包文件中偏移量。$ b/ y5 f, Y$ Z5 E+ [
table.bin本身则是压缩后存放在包文件最后。
% j9 C: `/ a" @+ k7 k. X" Y2 x8 S7 J( B
那么要进行打包,如果文件大小不变,就很简单,例如messages.txt里改几个字符,用packzip打包回lang_en.dat,替换掉就可以正常显示,改中文因为没有对应ttf字体文件,所以显示的是方块。  p3 H: ?% z% {+ B8 D6 r- V; A6 a7 w
* i2 M9 X' H2 {1 {) n
如果大小改变,就比较麻烦,一来table.bin里面要修改相应的偏移和大小,二来用packzip打包回去时输入的偏移也会变化。
, _8 Y* y0 L; M, l3 P' C+ q我先手动处理一下试试。
; D5 Q, I' H- v6 L6 p8 K3 y  i5 {- j  W& B' Y" F$ M! _- s+ }
另外,那个解包器有没有源代码?
回复 支持 反对

使用道具 举报

5#
发表于 2010-2-27 09:31 | 只看该作者
对,就是要制作一个打包器。
9 H) o, [2 u; p4 ~' E& Jmessages.txt的文件大小肯定是要改变的,即使我们能控制翻译后的messages.txt的文件大小不变。但是packzip打包为zlib块以后,这个块的大小我们也没法控制啊。table.bin里面应该有压缩后的zlib块的大小的。所以说,修改table.bin估计是免不了的了。 ! ?* ^2 o8 i$ Q' x" f+ \. n
解包器没有源代码。老外的msn我有,你可以问问他看。[email protected] & y# D6 q% P+ H9 M3 r
原贴在这里, 1 _& q- y# w# N; s. I% H, |
http://forum.xentax.com/viewtopic.php?f=10&t=3231) B$ A: F) U! u; c2 B/ q4 {7 i

. s# c+ m% C. s7 f, G. j你现在要做的就是分析一下table.bin的结构,研究如何修改,及打包回去做出和原来一样的包文件。
; m# D  T% C7 x7 r7 l4 A包里的单个lib块可以用packzip打包,或自己用zlib库函数写。
回复 支持 反对

使用道具 举报

6#
发表于 2010-11-29 22:30 | 只看该作者
再顶上来 3
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表