冒险解谜游戏中文网 ChinaAVG

标题: 汉化工具任务进度 (39楼更新) [打印本页]

作者: 肥牛    时间: 2009-6-26 12:59
标题: 汉化工具任务进度 (39楼更新)
刚才把曾经做过的几个小工具修改了一下,然后集成到一个工具里。这样大家用起来可能会方便一些。
1 X8 Q' \2 Z- T. d1、BF 解包工具: 这个是原来俄罗斯人写的代码,我稍微改了一下,并且增加了可选择解包某个文件的功能。5 z* Z% _6 H% A% u1 e: u
2、BF 打包工具: 这个可以把指定的目录中的文件夹和文件打包,BIN文件会自动放到前面。与解包工具配合使用。
8 b7 u# q: M6 h: R4 E! k1 b3、汉化资源提取工具: 这个是从BIN文件中提取可供汉化的英文句子,汉化完成后再回写回去。现在这个工具已经做成通用的,应该可以适应大部分的游戏了。3 G6 v  M! L4 {2 i, P
4、待续……
$ X# e7 r  Q& `; C6 f' S2 _9 \- _# U6 W
, g! P6 y0 T1 @; _$ Q# b: P2009.08.01  39楼更新! P8 `. Q( F  @

7 h5 M: v$ j" u. a, j8 _大家试用一下,有什么问题告诉我。
作者: xuemoyuan    时间: 2009-6-26 20:37
试试...呵呵呵.....
作者: shane007    时间: 2009-6-26 21:40
我试过了可以使用。没问题。
  K' C1 C1 v4 I" q# B如果肥牛有时间的话可以做一些增强。
, C8 a' K- R9 @. P1 r- [加入查找和替换功能,方便人名等的汉化。5 E9 z. C: L1 A0 Y1 f
加入自动在最后或2侧补空格的功能,否则只能手工补。
' F" `% Q% f/ {, J" L1 b8 s0 ^$ a# P0 U9 }; J) C5 }# k: f
不过做到现在的程度已经可以加威望了,枫叶给加威望吧。
作者: 肥牛    时间: 2009-6-27 09:41
[attach]13498[/attach]: v, r7 ]# H% p2 {7 T* k6 M# B! ]
我在后面已经补上空格了啊。
作者: shane007    时间: 2009-6-27 09:47
引用第3楼肥牛于2009-06-27 09:41发表的  :
* r. j+ d' V: E. d( ~0 t[attach]13498[/attach]
* d, m: X0 l8 X& r1 J& x% q# i 我在后面已经补上空格了啊。
" ^0 ^& x* [. Z/ j- J1 x& X' k5 y
在后面加空格不是太妥当。
0 b' g% S! e5 x当字幕是居中显示的时候,后面补空格会造成显示出来的字幕不居中。1 ]- N# r# ]+ H) y/ E; O1 {' R! E) b
所以我编的翻译器加上了可以选择后面加空格或2端加空格。. I$ s% A% r5 z, o
程序不加2端加空格的功能也没关系,可以手工补。
( u) |' k7 N& }9 H如果想做得完美一些的话最好加上2端加空格的功能。
作者: 肥牛    时间: 2009-6-27 11:12
引用第4楼shane007于2009-06-27 09:47发表的  :
' T5 q" ?' X1 n6 X在后面加空格不是太妥当。$ H& E/ `  Z3 z+ g  x2 p
当字幕是居中显示的时候,后面补空格会造成显示出来的字幕不居中。
' [( m& l0 Z# b- x所以我编的翻译器加上了可以选择后面加空格或2端加空格。
* H' V( j" U: @, \; J& \$ J.......
这样就需要分别对待每一条语句,区分居中对齐还是向左对齐(干脆再加一个向右对齐)。! {0 C0 K, i+ {" n1 G5 ^
难度系数很低,有时间我就加上。另外,搜索和替换的功能也会一起加上。
作者: shane007    时间: 2009-6-27 11:28
引用第5楼肥牛于2009-06-27 11:12发表的  :
: r; j, H3 H- \" |# E( ^; s$ n& x4 d( E7 N
这样就需要分别对待每一条语句,区分居中对齐还是向左对齐(干脆再加一个向右对齐)。
  R" y0 }+ F( H4 K难度系数很低,有时间我就加上。另外,搜索和替换的功能也会一起加上。

7 ]' j" R7 W+ [. M- |1 t恩,辛苦了。
作者: shane007    时间: 2009-7-17 20:29
引用第7楼kods于2009-07-17 20:17发表的  :
( \& p  r% ^3 K: |$ ~# C应该不用补空格,补00就可以。这样游戏在读取到00之后会认为一段话已经结束,自动将已经读取的文本对齐。% q; s+ I) H. }7 s0 v
不过会遇到奇数字节时,行末会截断汉字,成为乱码。以前是在游戏内测时找出并手动修正的,不知是否有通用的自动修正的方法。
/ G6 D1 J' v( e$ Q
老前辈出现。
0 t/ |+ Y' N+ L9 L# J* W这个问题好像就是水晶之匙2的问题
作者: a2937230    时间: 2009-7-17 20:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: shane007    时间: 2009-7-17 20:42
我想知道,重返神秘岛2每行的字数是否是固定的?
作者: shane007    时间: 2009-7-17 20:44
每行的字数是否是固定的话,应该可以做出工具来。
作者: 慕容枫叶    时间: 2009-7-17 21:02
没办法 有的游戏会出现这样的效果……
作者: shane007    时间: 2009-7-17 21:03
恩,原因我知道了。
2 \7 q! A7 X" ?% w$ u- }. a. r. J! l* o0 B. F1 a
对了,老前辈,你对汉化技术还有兴趣吗?
$ N; {- p) M0 d* H  u有的话想让你帮忙分析一些游戏,同时还可以提高你的技术喔。
作者: a2937230    时间: 2009-7-17 21:10
提示: 作者被禁止或删除 内容自动屏蔽
作者: shane007    时间: 2009-7-17 21:11
OK,知道了。以后帮忙多出出主意就行了。
作者: a2937230    时间: 2009-7-17 21:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: a2937230    时间: 2009-7-17 21:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: shane007    时间: 2009-7-17 21:43
引用第21楼a2937230于2009-07-17 21:13发表的  :
5 D- z6 L: j  `  s/ x1 [0 Ghttp://www.namipan.com/d/Backup. ... 682fa748345ef8702023 y/ V5 w) {, ]* \- F
007这个是重返神秘岛2的BF包,我有PM肥牛修改工具,他也回复了。如果你有兴趣的话,也研究下吧。

% r% I4 i5 w8 ^0 ^$ J2 g7 A好的
作者: 肥牛    时间: 2009-7-23 08:08
实在抱歉,又是很长时间没上论坛了。最近的时间实在是太紧张了,很难找出整块的时间完善咱们这个工具了,只能一点一点的改动。
. z7 H4 g: v- }" w. L关于一个BF包中存在两个或者两个以上BIN文件的问题,我已经解决了,现在再打包的时候可以和原来的BF文件一模一样了。0 T. j) O. q2 t
关于资源提取汉化写入的问题,我前一段时间按照007的要求改了,就是可以实现文字的左对齐、居中或者右对齐,也就是在文字的哪边补空格的问题。搜索和替换功能也已经实现了。另外,原来采用的是ACCESS的数据库,时间长了文件会变大,速度也偏慢。我改成了SQLITE数据库,文件小,速度快。可是某一次在单位和家里之间同步的时候不小心用旧程序给覆盖了。我如果有时间就把这里补一下。: a2 H, X6 q5 _4 F
按照kods的要求,补00应该是可以。但是这样会存在一个问题,就是汉化以后的文件再次提取的时候,这个句子的长度就变成汉化以后的,而不是原来的长度了。这是一个麻烦事。因为不见得汉化一次就能成功的。那程序的结构就需要变动,需要在数据库中保存原始的信息,这样才不会被后来的提取覆盖掉。让我再好好想一想。
: O8 @5 N3 A# N: L$ _另外,需要各位帮个忙做一个测试,在需要汉化的BIN文件中,找两个资源测试。比如,在屏幕上显示的是"New Game"和"Load Game"这两行。用16进制工具打开BIN文件,这两行文字之间应该是三个(或者多个也无所谓)00分隔的。我需要大家帮忙测试的就是将这两行( O! o- d) `. j* G
New Game (00 00 00)Load Game
1 t0 ?- r0 p* L* n1 B+ B' x改成
2 p6 ^' u1 C1 t* hNew (00 00 00)Game Load Game
% F( O/ \9 H6 s' M6 |其中括号内的标识16进制代码' t7 D' b5 x) |1 W
这样,修改后的长度与原来的长度是相同的,然后再写入到BF包,去游戏中测试一下是不是显示的"New "和"Game Load Game",如果是,那么我们就可以实现汉化以后的长度大于原长度(前提是全部汉化后的整体长度小于或者等于原长度,这个应该没问题)。因为我这里游戏运行不起来,所以没法测试,只能拜托大家了。
作者: shane007    时间: 2009-7-23 11:17
有空我会测试一下的。
作者: shane007    时间: 2009-7-23 21:59
试了一下,
- K3 K9 ^' q" z0 l( D8 \New Game (00 00 00)Load Game 改成4 c- a- }$ S" U( C
New Game Load  (00 00 00)Game6 J, X3 h: g; V

; r0 m. I$ ?6 G7 p% Z+ pNew Game Load 显示不完全,Game 没有被显示。& I, r4 l2 {; R+ ^/ t$ M! M0 G
是不是同时还要修改字符串的长度? 那个.idx 文件?
作者: 肥牛    时间: 2009-7-29 17:32
007,这个地方我搞明白了。我今天晚上回家去写这个工具。1 }/ C, N! C6 N% K
简单说,在BIN文件的前部是索引部分,4字节的序号,4字节的语句个数,再4字节的长度,这里相应进行修改就可以了。
, Q8 m3 `! s/ W, D急着赶班车去,明天再说。
作者: shane007    时间: 2009-7-29 19:08
OK. 等你好消息。
作者: 肥牛    时间: 2009-7-31 09:03
在工具的编写过程中,又发现了新问题。
+ H) J0 G9 u3 s6 C+ r4 d我上面说的4字节的句子个数,这里是错的。我分析了一下,觉得这里应该是句子的类型。在我使用的BIN中,一共出现了三种类型。01、0A和0B,其中,01代表的应该是正常的提示。而0A和0B代表的应该是对话部分,因为这个游戏中出现了两个人,Mina和Jep。而对于01类型的句子来说,前面文件头部分的4字节的长度和句子的长度是对应的。但是对于0A或者0B类型的,处理起来就麻烦一些。因为这两种类型对应的部分是这样的。
! U8 `8 r* d; x
, W4 c- ^. u% H文件头部分3 E" ]" |% X2 e0 a9 C' U1 O9 T) ]
[attach]13729[/attach]# `6 {7 \8 |$ A6 {" r; N% U7 {1 r

; V" ^# ]& g' A2 k5 G9 w% y文件体部分
/ J0 C. Y3 X) L1 u1 h- X( w) n* q. Y% g [attach]13728[/attach]  ' ?+ i, X! j$ Z/ E$ p1 P5 K/ [

7 ]  j6 y* A1 }6 o先是显示对话句子的代码,如Mina0200,然后是三个00,接下来才是对话的内容:No!,后面再跟三个00,这样“No!”长度3,再加上后面三个00,长度正好是6,就和文件头部分的长度对应上了。也就是说,处理01类型和0A或者0B类型的方式要分开。6 x0 f: Z" _$ G7 y0 ^0 _* d
# y& @* F& D8 {5 Q# u  N# ]( O+ g
我目前已经完成了从BIN文件中提取的工作,下面就是写回的操作了。因为有朋友提出,翻译后的文字可能会比原来的文字长,所以这次核心的代码完全推翻重写的。实际上就是完全重造BIN文件。写回后,新的BIN文件的长度和原来的BIN文件长度会有变化。按照我的理解应该是可行的,只是这个想法还需要在实践中检验。# o+ Q6 a+ V: p7 P1 _6 M

. {) l+ r( E7 @5 [6 h' a: b我用来测试的这个文件中,只有三种类型,01、0A、0B,我处理起来是按照01的和非01的处理的。不知道其他游戏会不会有别的类型。以后慢慢再完善吧。我继续我的工作了。
作者: shane007    时间: 2009-7-31 09:42
水晶之匙2的字幕文件好像并不是这样的。0 V/ L5 u1 b' Q6 A# g' Y
你看看?
作者: die_humans    时间: 2009-7-31 09:45
jep。。。重返2的人物 嘿嘿
作者: hakula1125    时间: 2009-7-31 10:30
引用第32楼die_humans于2009-07-31 09:45发表的  :
1 g0 f! m$ l) s1 |* i1 Djep。。。重返2的人物 嘿嘿
呵呵,的确好像就是我们那份材料
作者: a2937230    时间: 2009-7-31 12:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: 肥牛    时间: 2009-8-1 12:38
我很郁闷……. T' o6 s6 _. i' J- M) |/ u
昨天下午测试发现,数据库不支持中文……" v+ G' T" B* c3 w
晚上查资料,修改UTF编码,改程序,折腾到半夜,最终也不行。
! s0 o  B1 r$ w& K使用SQLITE数据库是因为它的速度快,体积小,谁知道竟然DELPHI的控件不支持中文,只好放弃。
* u' o9 R7 @2 W今天改成ACCESS的数据库,一切正常,可是到最后查找替换功能的时候,ADO引擎不支持REPLACE函数……
; H  }* \. @! c- b" ?/ Z3 Q我快崩溃了……$ q' x! |; e. Z4 q/ {+ A
现在换成DBISAM数据库,支持中文,支持REPLACE,本来以为一切顺利……
9 _& s- R6 F1 Z: |" d/ `# o  W/ E谁知道现在出现数据不能保存的问题……
% i2 ~: ~0 p: B" b* t
- t9 L6 u7 k6 r% w0 u. q+ c. i也许今天不适合写软件,我还是去魔兽世界里面战斗吧。明天见。
作者: shane007    时间: 2009-8-1 12:54
你为什么一定要用数据库啊?
$ r' c8 n& D! O: K象我那样把每句话切成一个文件多好。多人同时汉化也可以实现。
作者: 肥牛    时间: 2009-8-1 15:34
用数据库的是为了方便的实现搜索和替换功能,如果用文件会相对慢一些。
6 J$ a3 d- Q' j1 _0 W; F6 n; F另外,可以对曾经处理过的游戏内容保存在数据库中,以后再打开的时候直接打开保存的数据库就可以了。
5 ?4 b  j) e3 x8 I2 p8 \, w我现在已经加入导入和导出的功能,让多人同时汉化方便一些。2 x' d' d- c# e5 l# O+ T* \3 e6 L
工具已经完成了,现在正在请朋友帮忙测试。没什么大问题就放出来了。
作者: a2937230    时间: 2009-8-1 15:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 肥牛    时间: 2009-8-1 15:48
工具终于可以告一段落了,初步的测试没有什么大问题。
9 a. W. j* z1 L0 _) ?+ m; u6 q我就放出来给大家测试吧。* l* O% w! p( `" N
需要注意的是,翻译对话部分时,下面的格式:
& d  q9 [5 D( S, b) ?" f2 B6 _4 E) K; Q% o% R  m3 n' e
Mina0200:3 g! x2 @$ E" T% A
No!
& D. z0 j  d) u. M# n6 k" B& o$ H0 p+ j: S
其中,第一行Mina0200:是不能动的,冒号是英文半角状态,后面跟一个回车换行。这里是严格不能变动的,否则导入到游戏里会出错。下面的内容可以根据自己的需要进行汉化翻译。& J+ T! D9 q2 m- W# q
2 e( P9 p, z2 R* u) L' Q
这个版本的工具最大的变化就是:翻译后的文字长度可以比原来的长度大了,也就是不限制长度了。
6 l+ X. h' v! K( J% z1 g, q" ~2 U
$ L3 u- K7 q" s另外,快速保存的快捷键忘了做进去了。呵呵。先这样吧,如果还有其他的BUG,我就一起改。
作者: hakula1125    时间: 2009-8-1 15:51
标题: Re:汉化工具任务进度
辛苦了~~~
作者: die_humans    时间: 2009-8-1 15:52
标题: Re:汉化工具任务进度
辛苦!!!
作者: a2937230    时间: 2009-8-1 16:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: hakula1125    时间: 2009-8-1 20:32
问题:RTMI2文本中出现很多~单独成行。。。不知为何。还有,文本打开没有历史记忆了。。也就是说,每次都要重新选取目标bin来打开,比以前繁琐了,如果可能的话,希望能改下
作者: hakula1125    时间: 2009-8-1 20:41
饿- -补上一条。。。查找功能区分了大小写,能否把这个区分改掉- -很有可能一些词出现在句首而筛选掉了。中文无法查找,同楼上的楼上
作者: 肥牛    时间: 2009-8-1 20:54
引用第43楼hakula1125于2009-08-01 20:32发表的  :
* X/ F" M, i. ~. A, P7 M问题:RTMI2文本中出现很多~单独成行。。。不知为何。还有,文本打开没有历史记忆了。。也就是说,每次都要重新选取目标bin来打开,比以前繁琐了,如果可能的话,希望能改下
这次的提取工具不是直接提取句子,而是根据游戏自身的资源进行提取的。( i( s, g6 e) r. U. N2 k
[attach]13776[/attach]
, K; R" w+ R  G) \1 s$ m8 U用二进制工具打开BIN文件就可以看到,有很多长度为04的,这个04表示资源的长度,其中还包括后面的三个00,也就是说实际的长度只有一个字节。这是游戏里面的设定,在翻译的时候忽略掉就可以了。
& E9 P1 ]2 ^5 E( a$ U" E/ R另外,也许大家注意到了,句子的序号不是从1开始的,而且也不是连续的。这个编号也是游戏里资源的编号,我们不能改的。
" m  R8 n* X/ c' P. j+ c) L
( q* T7 x4 D* |0 [至于你的第二个问题,在你第一次读取BIN目标的时候,不是提示你输入游戏名称吗?下次再用的时候,直接从上面选择这个名称,然后再点击打开就行了。这样就不需要再读取BIN文件了。
作者: 肥牛    时间: 2009-8-1 21:00
引用第44楼hakula1125于2009-08-01 20:41发表的  :
7 C# _6 F6 ]: j/ n# L# }饿- -补上一条。。。查找功能区分了大小写,能否把这个区分改掉- -很有可能一些词出现在句首而筛选掉了。中文无法查找,同楼上的楼上
2 m9 ~' N' j9 U2 y9 u, J0 `
唉,这个问题我还真没有测试,估计又是数据库的原因。搜索区分大小写还好解决,替换可能又是一个技术问题。至于中文查找,如果数据库不支持,……,唉,想想都头疼。
" {$ ]* r5 J0 ~  y/ l$ @; I实在不行,就像007说的那样,放弃数据库,直接用文件处理了。
作者: hakula1125    时间: 2009-8-1 21:23
引用第45楼肥牛于2009-08-01 20:54发表的  :* A! O! W2 S: \$ B; G
4 @. Z' j+ q/ F( }
这次的提取工具不是直接提取句子,而是根据游戏自身的资源进行提取的。! Q) H/ w  I+ W, t  a9 u3 ~
[attach]13776[/attach] 3 m& M8 [% H* p; }2 q  P
用二进制工具打开BIN文件就可以看到,有很多长度为04的,这个04表示资源的长度,其中还包括后面的三个00,也就是说实际的长度只有一个字节。这是游戏里面的设定,在翻译的时候忽略掉就可以了。  ]$ H2 V: j$ L; a5 f: v5 f( D, C
另外,也许大家注意到了,句子的序号不是从1开始的,而且也不是连续的。这个编号也是游戏里资源的编号,我们不能改的。
/ N; z' }# x5 E1 o/ f+ o/ x.......
呵呵,尝试了下,新功能很好用,调出很方便,谢谢肥牛兄,辛苦你了~~
作者: a2937230    时间: 2009-8-5 22:06
提示: 作者被禁止或删除 内容自动屏蔽




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