作者:Raindy 网站:www.raindy.org 『非标简介』
! S/ g; O0 u) t/ ?1 p/ ~3 x3 i& R2 @ 汉化标准资源后,在软件界面或调用信息时显示,但又不出现在String、Rcdata 等标准资源中的字串多数属于非标资源,非标资源无法进行可视化汉化操作,需要专门工具提取后替换回写到程序中。
3 q r+ }, ?- c K6 z3 Q9 J: x d+ b3 M8 w+ W7 h( w
『CXA 简介』
9 v4 V4 d& M# ] _# N CXA 是一款简单易用的字符串抓取替换工具,可以把英文程序中非标准资源的 ASCII 和 Unicode 字符迅速查找出来并经过翻译成可生成中文程序。
3 W” L; U I’ | CXA 在功能上,不输于点睛字符器替换器(简称点睛),点睛限于提取 PE 文件和文本文件,而CXA则不限,两者各有优缺点,通常点睛漏提的字串或无法提取的字串可以通过 CXA 弥补不足。# `0 S: h! T# v7 Y5 A
0 Q3 m& X5 Y8 m5 V, s- o8 y2 h
『学习任务』* j3 N3 l3 K a, _ b
汉化目标:使用 CXA 汉化示例软件的非标资源(PS:标准资源已汉化) }, t( K% U9 `4 }+ H
下载示例文件( y; R I. ~# o8 V7 L
# z; {; q0 N7 W2 t$ ^『操作流程』
2 F; H, f( {7 ~- c. n+ U. C; g2 I
1.运行 CXA,设置 CXA 参数,CXA 默认使用 Windows 自带的记事本为编辑器,可以根据个人习惯设置编辑工具,其他建议使用默认参数:
” y7 v6 q( G” @% x 0 @$ U4 h- {& ]1 i$ o
9 k’ F8 p3 F* C’ c6 [
2.通过“浏览”载入待汉化的程序,方式根据非标类型选择,本例软件为 VC++ 编写(非VB或Delphi),为ASCII字串,故“方式”标签处选择“ASCII(全部)”,“自动翻译”强烈建议不要使用,因为容易翻译不该翻译的内容导致非标汉化过度。步骤1设置完毕,“确定”跳转到到“步骤2”:4 ?3 s. J7 m0 C# a1 N2 v
# A+ U& x1 ]4 E; g
4 U M” v0 |8 L% _’ u
3.点击“编辑原始英文文本文件”打开 Webtool.exe.asc 文件(提取后未翻译),根据经验移除一些无用的字串,如图示的文件头等信息即可删除,完毕保存文件,“确定”转到“步骤4 ”:– }7 i7 N( o8 M2 b
‘ X# |) b5 k. Y” N
( e* j$ ~6 v. h+ l7 T: h
. w- y O2 {( J7 n’ [1 Q6 R4 S1 n9 q! U& r& `. l; U* c3 v7 `1 G F
4.编辑翻译文件 Webtool.exe.tra ,在CXA中以三行显示,第一行为行数标记,第二行为原始字串,第三行为待翻译字串,我们要做的就是翻译第三行的字串,注意字串翻译后的长度不要超过原始长度!3 F# l, I; B” J
‘ B6 x% `’ ~9 Z9 p
( c9 I+ r6 S, S. i – N; A6 [% p c3 [/ j
8 A1 U$ A! j’ h3 f* C 5.完整编辑翻译文件后,保存,manbet网页登录步骤4,进行替换操作,选择填补方式后“确定”。
0 a# g+ t5 Y7 t” L : a h+ k7 d( }3 k0 M( x
9 p+ {3 [1 d) l8 y4 d; e; W0 p! w
注意在 CXA 中填补方式使用0x20填充,即以空格填补翻译后字串小于原始长度留下的空位置,而不推荐使用0x00填充,因为容易造成字串截断损坏导致程序异常。
4 v’ W% w0 J6 K) d CXA 默认使用0x20填充,而点睛默认使用0x00填充,这是两者的不同之一。3 V% F4 Z( O( L N5 {1 x; Z
& ]2 q1 q1 z0 c+ X$ U9 O. Z) `4 C# [3 w; T6 ~ 6.提示是否更改程序字体,“是”,CXA回写翻译字串后自动转换成中文程序,此时,可以“把新程序改名为应用程序”(即将汉化后的程序名称用原程序名称命名,而同时原程序名称会自动添加.old 标记)
‘ o8 a3 i” h5 ^6 m ! V) ^8 s V: ]5 v7 q
) ^’ M- D& [! k5 ^
& ` u* c3 i6 q$ O3 w: j! q; r4 x& n3 u
此时即可测试汉化程序; U6 Q. F: n, c+ e9 o+ ~- u9 E( I; |
M9 E- F1 ^; T* I, M; y 7.下图中的“移除选定文件”后仍有许多空位置,即第5步中的0x20填充的结果;换成0x00填充,则空位置被自动截断不显示,更为美观。% n0 I1 8 x: N! ~$ W! m
在保证程序正常运行的前提下,可以尝试使用0x00填充。
; ]$ Q: Y/ I) X3 u# G2 G: |
, G0 M. K5 i% `0 ^ [『配套视频』
. U2 l+ q” X! M9 o! A” R, Q8 @; f& x0 k) g, @
2 v) |8 Z5 u’ S5 a) f6 C
『参考汉化』
/ n. ~6 v) K$ R0 [( L# B. x- B’ l 下载参考汉化文件
|