本帖最后由 超音速DX 于 2020-8-18 10:28 编辑
用最简单的方法,直观的图片带你进入精彩的汉化世界
手机汉化引言
手机汉化是指把手机软件的语言界面中文化。汉化听起来是一门很高深的技术。其实不然,学会基本的手机汉化很简单,只要您花点时间看这个教程,并加上一点点实践,您也可以像操作word文档那样轻松学会汉化。
以下教程针对S60第一、二版和三版软件的汉化。
为了让读者清楚汉化的过程,让我先介绍下S60手机汉化基本思路:
1、使用解包工具将需要汉化的软件解包,这样就分离出软件的语言包(以文件形式存在)。
2、然后使用汉化工具对语言包进行汉化(即将语言包文件中的内容翻译成中文)
3、然后再使用打包工具将汉化后的语言包打包,成为一个汉化后的软件。
编码简介
在汉化之前,让我们先了解一下手机编码,手机编码一般有Unicode和ASCII码
Unicode
Unicode编码,把西文字符和中文字符作为一个整体进行统一编码,每个字符均用两个字符进行编码,如英文的Unicode码的“OK”是两个字符占四个字节,中文的“确定”也是两个字符占四个字节,直接替换即可。
ASCII
ASCII编码,一个西文字符的储存要占用一个字节空间,而一个中文字符则要占用两个字节空间,相对上面的Unicode编码来说,ASCII编码的文件汉化起来要困难得多了,大家要细心哦。
软件解包
sis可以理解成是一个压缩文件,而解包就相等于把sis文件解压,提取相关的文件进行汉化(有关文件说明请看后面)。
要汉化sis软件,一般都是汉化它里面的*.rsc文件,有些软件则需要汉化*.app、*.exe、*.mbm等文件,而一些多语言的软件则出现*.r01、*.r02、*.r03文件。
获取sis软件的语言文件有两个途径:
1.在电脑上用 sis supper tool 把待汉化的软件解包,得到语言文件
2.先在手机上安装软件,然后用Fileman、activefile等软件把语言文件复制到other文件夹下,再用数据线(读卡器)复制到电脑上,如果软件是多语言版本,推荐用此方法。
ps:文件说明
*.rsc 软件的语言包
*.app s60v1v2 软件的执行文件
*.exe s60v3 软件的执行文件
*.mbm 里面收藏了软件的图片、图标
*_caption.rsc s60v1v2 软件的文件名
解包图解:
S60v3 解包
step1:运行软件
step2:打开待解包的软件
step3:选择文件后按打开
step4:按解包
step5:文件保存在指定的文件夹内
PS:需要改变解包后文件的存放位置可进入设置
________________________________________________________
用UltraRscEditor汉化语言包
软件功能
1.支持ASCII和Unicode两种编码格式
2.自动查找资源字符串,所有字符串都会在左边的树形列表中显示出来,可以选中字符串直接进行汉化
3.支持查找字符串,可以输入字符串,进行查找定位
4.查找未汉化的资源,使你能完全汉化软件(就是查找英文字母,所以有英文字母的都会查出来)
5.对资源修改没有长度限制,除非字符串本身有长度限制(这个我会在教程中具体介绍)
6.直接以十六进制进行了替换
使用教程
首先先说一下基本概念吧,汉化实际就是把原来的英文字符串替换成中文字符串,所以要先找到字符串,UltraRscEditor软件就是把字符串基本都搜索出来,直接供用户替换。
还有一个一定要分清的概念,不然下面说的可能弄不明白。就是资源结点和子资源结点的概念,子资源结点一般对应一个字符串,汉化时一般选择子资源结点,然后字符串就会显示出来,替换成中文即可。而资源结点是子资源结点的容器,资源结点中可能包括多个子资源(即字符串),他是由根据索引表构造出来的。
一、软件界面,可无视,直接跳到下一节
1:以十六进制显示资源
2:以ASCII显示资源
3:以Unicode显示资源
4:以四个字节显示资源(四个字节表示一个汉字,一般很少用,不提供读写操作)
5:资源树,在分析rsc文件提取的资源都放在这里。最顶层的结点是资源结点,资源结点的下一级为子资源结点。如图,红框内是资源结点,绿框内是子资源结点,选择子资源结点,就会有一个字符串在右边显示出来。
6:源文件中数据的十六进制显示。当选择的为资源结点时,显示的为资源结点的数据,当选择为子资源结点,显示为子资源结点的数据。
7:同上,不过是以当前编码方式决定怎么显示的。选ASCII码就以ASCII显示,选Unicode就以Unicode显示。
8:待修改数据的十六进制表示。没修改前是和源文件中资源一样的,修改完以后,会保存在内存中。当选择保存文件时,会自动保存到文件。显示的数据是资源或子资源,同6。
9:同上,不过是以当前编码方式决定怎么显示的。
10:待修改资源结点的十六进制表示。它会显示替换后资源结点的十六进制。
11:同上,不过是以当前编码方式决定怎么显示的。选ASCII码就以ASCII显示,选Unicode就以Unicode显示。
6,8,10看起来很像,区别就是在于6是显示源文件中当前选择的资源结点或子资源结点的数据,8是显示修改后的数据,也就是汉化后的数据,10是显示汉化后资源结点的数据,不管选的子资源结点是哪个,他始终显示的是资源结点。
7,9,11的区别和以上一样,不过就是按不用的编码方式来显示数据。
二、汉化过程
汉化过程非常简单,先选择合适的编码,配置好软件后打开语言文件,左边的资源树会列出所有的资源结点,字符串就在资源结点下面,如果一个资源结点包括有字符串的话,它左边就会有一个加号,点击这个加号,就会展开这个资源结点,选择一个子资源结点,子资源结点的内容就会在6,7号窗口显示,在9号窗口输入对应汉字,点击替换即可,软件会自动跳到下一个可汉化的子资源结点上。
替换后对应的子资源结点前面就会有一个绿色的方块,标明该资源结点已经汉化过了,继续汉化下一个字符串即可,直到完成整个汉化。
最后保存文件,替换原来的rsc文件即可。
PS:不推荐一下子把所有的资源结点汉化完成,最好汉化几个资源结点后测试一下,再继续汉化,以便出现错误时能及时找到错误的结点。
以上部分文字直接借用“cupea”的教程
______________________________________________________________________________________________________
用Hex Workshop汉化语言包--U码篇
上一步我们用了UltraRscEditor把全部资源结点都汉化过了,基本上完成了整个汉化,但可能还有一些顽强的英文字符串没有被UltraRscEditor找出,这次我们需要用Hex Workshop来进一步汉化。
汉化过程
运行Hex Workshop,打开刚才保存的rsc文件,我们先用Ctrl+F来搜索要汉化的英文字符串,判断它是U码还是A码再采取不同的方法汉化成中文字符串。例如现在我要汉化的英文字符串是“Unknown”,那么用Ctrl+F调出查找对话框,类型选择文本字串,数值填入Unknown,选项选取两者,按确定。
软件会标注出搜索到的字符串。从下图中我们可以看得出,“Unknown”显示为U.n.k.n.o.w.n.共占14个字节,通过U码的定义我们能确定这个字符串是U码编码。
如果显示为..Unknown则是A码编码(汉化的方法可以看下一节)。
前面我们提到过,在U码编码中,无论是西文字符或中文字符每个字符都是用两个字符进行编码的,所以U码的汉化直接替换即可。Ctrl+H调出替换对话框,类型选择文本字串,查找填上Unknown,替换填上中文,选项选Unicode字符串和用空格填充,按确定,再按替换。
为什么这里要“用空格填充”呢,因为中文字符长度往往会比英文字符长度要短,为了保证字符整个文件长度的不改变,所以长出的部分我们可以用空格进行代替。
替换后的编码会用红色来标注。
到了这里相信大家对U码的汉化都基本掌握了,我们进入下一节吧。
____________________________________________________________________________________
用Hex Workshop汉化语言包--A码篇
A码的汉化比U码的汉化要困难得多,大家要细心和要有耐性。
1.有最大长度指针的字符串
我们用ActiveFile里面的字符串..Settings做例子
它的编码是 08 08 53 65 74 74 69 6E 67 73
其中:
08 表示整个字符串有8个字符(有效长度)
08 表示整个字符串有8个字节(占用字节)
53 是"S"的ASCII编码代码
65 是"e"的ASCII编码代码
74 是"t"的ASCII编码代码
......
这时打开ASCII.exe软件,编码类型选Unicode码,进制选十六进制,在字符处填上设置,在下面就得到设置的U码8B BE 7F 6E
整个字符串的编码就是 04 08 0F 8B BE 7F 6E E0 20 20
1 2 3 4
其中:
04 表示整个字符串有4个字符
08 表示整个字符串有8个字节
0F 表示后面的内容为U码
8B BE 是"设"的Unicode编码代码
7F 6E 是"置"的Unicode编码代码
E0 表示前面的内容为U码
20 20 表示两个空格,如果这里不补充空格,字符长度就会和以前的不同,会产生索引表偏移量的不对称,导致软件无法运行
Ctrl+H调出替换对话框,类型选择十六进制值,查找填上080853657474696E6773,替换填上04080F8BBE7F6EE02020,按确定,再按替换。
保存文件,然后放到手机上,看看是不是已经汉化了!
语法:XXZZ+A码=YYZZ+0F+U码+E0+20,20添加的个数视乎实际情况
2.没有最大长度指针的字符串
这个就很简单了,不用计算有效长度了,直接把A码转换成U码就可以了。
语法:ZZ+A码=ZZ+0F+U码+E0+20,20添加的个数视乎实际情况
小技巧:
有时候我们会遇到不够字节用,比如这个Settings,我们翻译成"基本设置",那么它的编码就变成了04 0A 0F 57 FA 67 2C 8B BE 7F 6E E0,相差了两个字节怎么办呢?不用怕,我们先把他替换成"设置"(04 08 0F 8B BE 7F 6E E0 20 20)
记下它的偏移量:01BF后保存文件,然后用UltraRscEditor打开刚才保存的文件
找到01BF这个子资源结点,把"设置 "替换成"基本设置"就可以了,不用担心偏移
如果想把多余的20去掉,帮rsc文件减减肥,大家可以动动脑筋
特殊字符:
0A(识别换项)、09(识别Tab)转换成U码分别为000A、0009
________________________________________________________________________________________
S60v3软件打包
S60v3软件的打包也是以我汉化ActiveFile为例子,说说整个改写pkg文件和打包的过程
step1
软件被解包后会在指定的文件夹内生成相关的文件,这时我们将汉化后的*.rsc、*.exe等文件复制到temp文件夹内替换原来的文件
step2 修改pkg
进入pkg文件夹,用记事本打开uNsis.pkg(注意,不一定是这个文件名,这个文件需要和.bat的处理文件定义的一样就行了)
pkg文件修改前
;*****************************************
;This pkg file was made by uNsis !
;Modify "filename" & "1,0,0" to yours !
;*****************************************
&EN
#{"filename"}, (0xA0000230), 1,0,0
%{"the3sky-CN"}
:"the3sky"
[0x101F7961], 0, 0, 0, {"Series60ProductID"}
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.exe"-"!:\sys\bin\ActiveFile.exe"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile_aif.mif"-"!:\resource\apps\ActiveFile_aif.mif"
"G:\Hanzify\S60 v3\OS9\test\temp\dirIcon.mif"-"!:\system\data\ActiveFile\images\dirIcon.mif"
"G:\Hanzify\S60 v3\OS9\test\temp\bitmapfont.mbm"-"!:\system\data\ActiveFile\images\bitmapfont.mbm"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.db"-"!:\system\data\ActiveFile\ActiveFile.db"
"G:\Hanzify\S60 v3\OS9\test\temp\1.st"-"!:\system\data\ActiveFile\1.st"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.rSC"-"!:\resource\apps\ActiveFile.rSC"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile_reg.rSC"-"!:\private\10003a3f\import\apps\ActiveFile_reg.rSC"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.r01"-"!:\resource\apps\ActiveFile.r01"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile_reg.r01"-"!:\private\10003a3f\import\apps\ActiveFile_reg.r01"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.r03"-"!:\resource\apps\ActiveFile.r03"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile_reg.r03"-"!:\private\10003a3f\import\apps\ActiveFile_reg.r03"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.r59"-"!:\resource\apps\ActiveFile.r59"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile_reg.r59"-"!:\private\10003a3f\import\apps\ActiveFile_reg.r59"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.r05"-"!:\resource\apps\ActiveFile.r05"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile_reg.r05"-"!:\private\10003a3f\import\apps\ActiveFile_reg.r05"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.r16"-"!:\resource\apps\ActiveFile.r16"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile_reg.r16"-"!:\private\10003a3f\import\apps\ActiveFile_reg.r16"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.r04"-"!:\resource\apps\ActiveFile.r04"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile_reg.r04"-"!:\private\10003a3f\import\apps\ActiveFile_reg.r04" pkg文件修改后
&ZH
#{"文件动力v1.27"},(0xA0000230),01,27,00, TYPE=SA
%{"garywah(細華)-CN"}
:"WDA"
[0x101F7961], 0, 0, 0, {"Series60ProductID"}
"C:\garywah.txt"-"",FILETEXT,TEXTEXIT
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.exe"-"!:\sys\bin\ActiveFile.exe"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile_aif.mif"-"!:\resource\apps\ActiveFile_aif.mif"
"G:\Hanzify\S60 v3\OS9\test\temp\dirIcon.mif"-"!:\system\data\ActiveFile\images\dirIcon.mif"
"G:\Hanzify\S60 v3\OS9\test\temp\bitmapfont.mbm"-"!:\system\data\ActiveFile\images\bitmapfont.mbm"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.db"-"!:\system\data\ActiveFile\ActiveFile.db"
"G:\Hanzify\S60 v3\OS9\test\temp\1.st"-"!:\system\data\ActiveFile\1.st"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile.rSC"-"!:\resource\apps\ActiveFile.rSC"
"G:\Hanzify\S60 v3\OS9\test\temp\ActiveFile_reg.rSC"-"!:\private\10003a3f\import\apps\ActiveFile_reg.rSC" 注释:
1.第一行是界面语言支持行,汉化了的软件当然要写上ZH(中文)。
2.第二行是安装程序信息
文件动力v1.27 是程序名称
0xA0000230 这就是软件的UID
1,27,0 这是程序安装时显示的版本号,1是主版本号,27是次版本号,0是build版本号
3.第3、4行是软件安装时的一些个人信息,可自行修改
4.第5行是兼容性,记得一定要加上
5.后面的内容就是程序安装路径,其中红色部分是在安装过程中显示自己信息的文件,如果不显示这行就不用加上。由于ActiveFile是多语言版本,而我们安装在手机上只要中文就行了,所以其他的语言文件可以不要。
修改好pkg文件的内容后就保存,文件名为winsis.pkg,保存类型为所有文件,编码为UNICODE
step3 打包
把刚才保存的winsis.pkg复制到打包工具的文件夹内,双击未签名打包.bat就会自动打包成功。
另外:最好将需要打包的文件都放在这个目录内.
|