- 好友
- 0
- 在线时间
- 54 小时
- 最后登录
- 2013-5-9
那颜[汉化小组]
- UID
- 709
- 第纳尔
- 132
- 精华
- 1
- 互助
- 5
- 荣誉
- 20
- 贡献
- 29
- 魅力
- 0
- 注册时间
- 2007-1-9
鲜花( 0) 鸡蛋( 0)
|
这原本是中文站汉化与测试小组内部交流资料,最近矮子发现越来越多的朋友对M&B的汉化感兴趣,但又苦于不知其汉化方法而无从下手,于是矮子将这份教程从内部论坛转移出来,与所有会员分享,希望对大家能有所帮助
by muyiboy 07.09.09
心态汉化基础篇
汉化说实话很枯燥,但很受人尊敬,同样也能学到很多你从来没接触过的知识.也许你一个人的加入带来了决定性的一面.
首先,我们先别慌着开始汉化研究,因为汉化涉及许多电脑方面的基础知识,我们必须先来学习一下这些基础。如果你对自己的电脑知识掌握程度有相当的把握那就跳过这一部分继续往下看,如果没有就一定要认真地看。
二进制(0 1):不管是电子计算机还是游戏机在存储数据的时候都是以二进制的方式进行储存的。因为电子电路能表示的就只有两种状态,要么通电要么断电(电子电路是与非门电路,准确来讲应该是高电位和低电位两种状态,这里为了简单化就认为成通电与断电)。而我们人类只习惯于十进制,所以要读懂二进制就先转化为十进制。又由于二进制的一位表示的数值太小,如果要表示一个比较大的数字的话这个二进制数字就相当的长,这样不便于人们辨识。所以从二进制里面派生出了八进制(0 1 2 3 4 5 6 7)和十六进制(0 1 2 3 4 5 6 7 8 9 A B C D E F),每三位二进制数可以转换为一位八进制,每四位二进制可以转换为一位十六进制。怎样互换这些不同的进制数值是个数学问题,高中文化都知道的方法,如果实在不懂的话可以使用任何一款科学计算器,Windows系统里面就带有。
位bit与字节byte:我们常说的电脑是32位;PS是32位;GBA是32位,这里的32位指的是核心CPU寄存器的宽度,数值表示范围从00000000H-FFFFFFFFH。两位十六进制数为一个字节byte,数值范围00H-FFH;两个字节为一个字;两个字为一个双字。由此可得几个单位的转换关系:1GB(byte)=1024MB 1MB=1024B 1B(byte)=8b(bit)。
文件与存储:电子设备在保存记录信息的时候也是二进制的方式来保存的,文件也是一样,无论是rm mp3还是txt 甚至游戏中也是这样的。但有一点需要注意:在保存数值信息得时候,数值是以字节为单位,高地址存放高位字节,低地址存放低位字节。什么意思呢?举个例子:1234H 这个数有两个字节的宽度,在保存的时候就应该是34 12,因为12是高位字节,34是低位字节,越往后靠地址越高。 我们再来认识一下文字在电脑中的存储显示问题。我们知道在电脑中储存的信息只有两种状态——0和1(二进制),所以我们就得把具体问题抽象为0和1的问题。一般来讲,文字在电脑中保存有两种形式:文本形式和图片形式。 先来研究文本形式的文字。最基本的就是把字符点阵化然后把每个点的状态转化成二进制代码。以字母“A”为例:
○ ○ ○ ○ ○ ○ ○ ○ 00000000
○ ○ ○ ● ● ○ ○ ○ 00011000
○ ○ ● ○ ○ ● ○ ○ 00100100
○ ● ○ ○ ○ ○ ● ○ 01000010
○ ● ○ ○ ○ ○ ● ○ 01000010
○ ● ● ● ● ● ● ○ 01111110
○ ● ○ ○ ○ ○ ● ○ 01000010
○ ○ ○ ○ ○ ○ ○ ○ 00000000
这是8*8像素字母A的点阵构成 我们把每个点的状态转换成二进制数值,用0表示○;1表示●,按照这个规则从左到右从上到下排列就可以得到:00000000 00011000 00100100 01000010 01000010 01111110 01000010 00000000。
转换为十六进制:00 18 24 42 42 7E 42 00,这就是最简单的表示方法,但这并不是字母“A”在文件中的保存形式。我们可以使用“记事本”(一定要使用记事本)创建一个纯文本文件,里面输入唯一的一个大写字母A,然后我们再用任何一个十六进制编辑器打开这个保存的文件就会发现问题(推荐UltraEdit):文件中只有唯一的一个十六进制值——41H。为什么不是我们得到的00 18 24 42 42 7E 42 00?道理很简单,如果文字都按照这样的方式储存并表示的话那文件就太大了。计算机在保存文本的时候并不是直接把文字的点阵信息记录到文件中,而是把点阵记录到系统字库里,而文件中就记录下这个字符的代码值。在读取的时候先把代码值41H读取出来,再通过字符映射找到41所对应字符在系统字库里面的实际位置,接着再把这个位置的信息00 18 24 42 42 7E 42 00读取出来通过显示程序显示在屏幕上的。字符映射表就是详细记录代码与字符点阵的对应关系,为一一映射,没有一对多也没有多对一。调用系统字库可以大大节省文件的容量,提高显示效率。映射表在汉化的时候也可称为码表。在电脑中最典型的内码就是ASCII,“41”(十六进制)就是英文字母“A”的ASCII码值。ASCII里面包含了所有英文字符和标点符号的映射关系,ASCII编码的时候为单字节,所以A只占用一个字节。汉字的内码比较多,主要有GB2312(简体)和GBK(繁体),汉字编码一般为2个字节,所以表示一个汉字所占用的空间就是英文字母的两倍。这一原理相当的重要,日后汉化中都是围绕这个过程展开的。其实从这个原理就可看出为什么汉化英文游戏比日文游戏难度大的原因。(ma, Guokai又给我们带来了好东西.能把单字节的游戏汉化)
以上为文字的基础,下面说说图像.因为有的汉字在M&B字库里没有但又是以DDS压缩图保存的字库,所以有必要了解一下.
像素:构成图片点阵的点单元数目。因为图片都是矩形的,所以我们可以用“宽”和“高”两个参数来描述,即分辨率。比如上一期中谈到的那个字母“A”的点阵图就是一个宽8像素高8像素的一个图片,分辨率就是8*8。像素是以点单元也就是像素点为基本单位的,并非厘米毫米。至于点的大小则是由硬件本身的性质决定的。
色深:构成图片调色板的颜色数量。色深一般有单色、4色、16色、256色、16位色、32位色等等,色深越大图片颜色越丰富效果也就越好。图片的调色板固定了,图片所用到的颜色范围也就固定了,图片所用到的颜色都是从调色板里取出来的,调色板没有的颜色就无法取到,图片里也就不可能出现这种颜色。图片的色深决定了图片存储时每个像素所占用的空间长度。
色素:像素点的颜色。表示颜色有很多方法,用得最多的就是RGB(Red,Green,Blue)三元色,所有的颜色都可以通过红绿蓝这三色的深度表示出来。(255,255,255)就是一组RGB值,它表示黑色,(0,0,0)表示的是白色,随着这三个值在0-255的范围内变化,颜色也会随之变化。
图片存储还有一些规则必须了解。色深不同保存后每个像素占用的空间就有区别,刚才我们所讲到的16色图片每个像素仅占用半个字节(因为只有16种颜色,所以就只有16个索引值用0-F表示出来),所以两个像素合起来才占用的是一个字节,合起来的数值在记录的时候是按位进行操作的,换句话说就是要满足数值存储的基本规则——高地址存放高位值,低地址存放低位值。如果图片是256色那么每个像素就得占用完整的一个字节,65535色(16位色)就得占用两个字节,以此类推。这里我们引入一个单位——bpp(bit per pixel)位每像素,这个单位和色深基本上是同一个意思只是描述的方式不一样,色深是直接指的颜色数量,bpp通过描述每个像素所占用的空间间接说明颜色数量,不过bpp这个在汉化的时候更为常用。通过以上的说明,我们就可以知道bpp和色深有如下关系:
1bpp—单色(黑白)
2bpp—4色
4bpp—16色(4bit就是半个字节)
……
bpp这个单位在以后经常会用到,其中的含义一定要深刻体会。另外,游戏中的图片格式虽说和bmp比较接近,但很多时候还是有它的特殊性的,对于图片格式的认识我们以后接触到游戏的时候再作补充.
以上为心态和基础篇
——————————————————————————————
流程篇
注意:文本保存一定要UTF-8编码.怎么保存?记事本打开另存为,最下面的那个ANSI改成U-8,
1.文本导出(原文)
MOB文件下.
conversation.txt (对话)里主要是对话文本.对应汉化包文件dialogs.csv
item_kinds.txt(物品) 里主要是对话文本.对应汉化包文件item_kinds.csv
parties.txt (城市名,地图兵种名)里主要是对话文本.对应汉化包文件parties.csv
strings.txt(变量事件)里主要是对话文本.对应汉化包文件game_strings.csv
troops.txt(兵种名,NPC名) 里主要是对话文本.对应汉化包文件troops.csv
factions.txt(地图势力名)里主要是对话文本.对应汉化包文件factions.csv
menus.txt(菜单) 里主要是对话文本.对应汉化包文件game_menus.csv
party_templates.txt (地图兵种) 里主要是对话文本.对应汉化包文件party_templates.csv
上面为主要用到的.下面几个不常用.只有特别的几个MOD
quests.txt(任务)quests.csv
skins.txt(脸型) skins.csv
(技能)skills.csv
(物品前辍变量)item_modifiers.csv
2.文本修改(原文)
这个比较烦.用是把上面对应的文本
就是把
dlga_so_you_want_to_be_a_ 459 0 1 2147483679 33554613 1 0 So_you_want_to_be_a_bandit? 15 0
改成
dlga_so_you_want_to_be_a_|So you want to be a bandit?
以便于翻译.
3.文本生成(分成小份,按人数定)一般扩展名为TXT. 如果文本量小可以直接弄成CSV,如果可以的话,在每行文本前面可以标注行数,这样方便定位。
4.领取文本
领取文本可以在论坛进汉化小组的版块找,看看没有翻译的文本,尽量不要重复而避免资源的浪费.人们的小组不是强制性的,有时间的可以多弄点.如果人手够,一定要在发布测试包前两天的时候弄完
5.翻译文本
注意:不要加空格,这一步放到最后.
翻译是整个汉化的关键,有时候英文的文本并不像我们的中文一样.不认识的字可以代替,但英文不一样,MOD制作作者可能会乱造一个词.让你挖破脑袋,找遍英文百科都没有.而往往这个词却是更个MOD里的核心.例子我也不找了,麻烦,所以在翻译文本的时候把这种词空出来.空时后面加个空格,以汇总的时候找起来容易. 新建一个文本把不知道的词放在上面.一同连翻译好的文本放到论坛.新建文本格式. {单词 人名/地名/势力名/*** 建议词议(意译/音译/***)}
6.汇总
收集翻译好的文本,与冷辟词弄起来.如果时间充足可以QQ群里讨论,可以上论坛.这一步最好由文本导出者做.因为整套文本他最熟.
7.导入文本(合并)
加好空格后把翻译好的文本导入对应的文件
8.做成测试包
测试包可能会以RAR ZIP EXE结尾,要上付上使用方法.写上版本号.
9.测试人员测试
语言的润色和语气都要靠你们了.还有哪些地方翻译的BUG, 建议做一张BUG表.
英文语句 原翻译 建议翻译 最后结果
dlga_so_you_want_to_be_a_| **** ***** ******
然后在群和论坛上讨论这些BUG.
10.修改.更新
把讨论的最后结果交给导出文本者,由文本工作人员修改进去.再进游戏测试.弄出最后的完美汉化包.(为什么交由文本工作者?就是在发布汉化包时能更好的写上更新内容与项目.而且也会快点.)
11.做出最终超级无敌完美版.
这是最激动人心的时刻因为几分钟后就能发布最终完美版汉化包了.付上汉化成员的大名(因为你是受尊敬的),版本号,英文名,使用方法.发布日期,汉化组的LOGO等等这些东西.
版本号: 一般不超过原英文版本号. 比如原英文版0.77 汉化包版本号最好不要超过这个. 在测试的时候可以慢慢的升上来,0.1 0.2 0.3 到最后完美版建议和英文版同号.
最后注意事项:每一个成员都是独当一面的人才.但是有一点一定要记住,如果是文本导出者一定要弄到测试包发布,翻译人员一定要把自己领的东西弄完.测试人员一直弄BUG表,直到完美版发布.总之一句话.接手了就不要放弃,那不是男人应该做的.
12.MOD版本升级的汉化方法.
这个是麻烦的,又要把前面的从来一遍 当然会快得多.导出的文本会在原来的基础上小上很多.所以不细说了. (打字也打累了)
汉化技巧篇
关于抽取英文文本,官方网站介绍了一个方法,可以减少工作量,希望能对汉化的朋友有帮助:
运行Mount&Blade,开始一个游戏(一定要实际的开始一个新游戏或者载入一个旧进度)
按Alt+Enter. Mount&Blade会运行一个小窗口里面。
在菜单里面选择"view",然后选"create language template"
会有一个对话框告诉你在哪里取得文本文件。
关于加空格,mountandbladetranslationtool里面的addspace能够比较完美的加上空格,因为字体文件是参照加空格的算法生成的。但是加空格前的原文最好是按照汉字书写习惯没多余空格的。假如手工加空格,最好在汉字和标点符号间不要加空格,因为那样会造成最后一个汉字和标点间有一个空白。
工具篇
office 都知道了吧~~
mountandbladetranslationtool 官方的文字工具
gen.bat 把source文件夹下的*.CSV文件合并(只在source下,里面的目录好像不算.)成TEMP文件.
addspace.bat把source文件夹下的*.CSV文件(只在source下,里面的目录好像不算.)加好空格存放入dest文件夹.
还有其它两个不太常用.
MBfont 和 pupp M&B的字体察看和修改工具
UltraEdit 最好的16进制编辑工具
Python 下载地址
http://www.python.org/download/ |
|