软件本地化与汉化
来源:互联网 发布:唐筛3个数据都大于1 编辑:程序博客网 时间:2024/05/16 16:19
软件本地化与汉化
----看不懂命令、看不懂帮助——因为,一切都是英文的。现在,大部分软件用户的英语水平不高,使用英语软件有不同程度的困难。我们常见到这样的朋友,听说某软件功能很强大,千方百计搜寻了来,安装后一看复杂的英语界面,根本就不会用,只有自叹英语太差。
解决办法至少有两种:
- 帮助用户提高英文阅读能力;
- 制作中文版软件。
短时间提高英文阅读能力,希望所有用户都精通英文是不现实的。事实上,也并非只有英文水平较低的用户才喜欢使用中文界面的软件。绝大多数人使用自己的母语进行交流最为自如。即使外语水平很高的用户,使用外语进行工作的效率也往往比用母语低。
制作中文版软件,软件的开发商和经销商为了扩大潜在客户群、减少培训与支持费用、提高用户对产品的信心、增强产品竞争力等原因,也会推出本地化版本的软件。满足用户的需求,战胜竞争产品赢得客户。
并非所有的软件都有进行本地化,最终的决定性因素是本地化投资是否能带来相应的收益。这就是我们看到许多软件有日文版甚至繁体版,却没有简体版的原因。
为了推动我国计算机使用的普及,国内汉化人,不记报酬,付出无偿的艰苦劳动,把许许多多软件界面汉化成中文。为更多的朋友学习计算机,使用计算机提供方便之门。对普及计算机应用、加快我国信息技术发展都是起到了重大的贡献。
汉化小知识:
- 本 地 化(localization):对软件进行加工,使之满足特定市场上的用户对语言和功能的特殊要求。可能涉及文字的翻译、用户界面布局调整、本地特性开发、联机文档和印刷手册的制作,以及保证本地化版本能正常工作的软件质量保证活动。localisation也是本地化的意思,较少用。
- 国 际 化(Internationalization):在开发程序内核的过程中,功能和代码设计均不局限于某种特定语言,使创建不同语言版本的过程得以简化的软件工程方法。国际化面向编程和设计,而本地化更接近一种“转换”。也叫“全 球 化(Globalization)”
- 汉 化(hanzify):“本地化”的中国本地化。较之“本地化”,它更为通俗易懂,不过由于专指从其他语言到中文的转换,随着国际交流的增加,业内人士似乎已渐渐倾向于使用“本地化”。国内业余汉化人倾向使用“汉化”,主要指对软件的用户界面从其他语言到中文的转换。
- 资 源(Resource):Microsoft资源文件 (.RC) 包含的字符串、对话框、菜单、快捷键、图标、位图等。在本地化过程中通常指软件中需要翻译的内容,即 localizable resource,包括delphi资源文件dfm包含的字符串和一些非标准的资源形式(ASCII)。
本地化简介:
本地化是商业软件出于营销策略考虑,满足特定市场上的用户对语言和功能的特殊要求,而对软件进行加工。一般包括以下五项工作:
1. 翻译包装和宣传材料
翻译包装是本地化的最基本层次,所需投入最小,但所能带来的收益也最小。
2. 支持当地语言
只有支持当地语言才可能真正进行本地化。这部分工作涉及源代码修改,通常由产品开发人员完成。如果在开发过程中已经实施了国际化策略,就很少有额外的代码工作。完成这一层次的工作后,软件用户界面仍然是英文的,从外表上看与英文软件完全相同,区别主要是:
- 可运行于本地语言的操作系统上
- 可接受本地语言输入并用本地语言输出
3. 转换用户界面和文档
在此基础上进行用户界面和文档的转换才有实际意义,也就是传统意义上的“本地化”。也有人考虑在软件能用当地语言输入输出之前就翻译文档,这似乎可以改善产品的易用性,但既然用户还是必须用英文工作,这看起来有点本末倒置。
出于费用、时间和技术等方面的考虑,转换用户界面和文档的工作大多由专业本地化服务提供商进行。委托方通常会根据预算和项目周期的限制按照下列顺序决定本地化的范围:用户界面 -> 联机帮助 -> 手册 -> README -> 样例 -> 演示和教程 -> 其他
对一些规模较大、专业性较强的软件,可以考虑先转换部分手册,待时机成熟后再进行全面的本地化。
4. 支持本地硬件和软件
由于各个国家和地区流行的硬件和软件可能会有所不同,产品的兼容性可能会成为障碍。在欧美一切正常的软件到中国后“水土不服”不足为奇。以支持本地硬件和软件为目标的本地化,有时并不困难,只要有产品开发人员的支持即可,有时却会遇到技术难度大、风险高的难题。
5. 提供本地化功能
针对当地用户的特殊需求修改功能特性或直接进行开发。例如,
- 提供汉字竖排和从右至左布局的功能
- 提供符合中国国家标准的土建工程图纸标注功能
我们看看台湾一家专业本地化服务提供商的中文化流程、计划管理流程和使用的工具。
1.中文化流程
2.计划管理流程
3.使用的工具:
- 客户所提供的用户端工具程式
- TRADOS - 此工具可确保一致性
- TargeTek Glossary Finder - 可以简单快速找到词汇。
- SC-TC 文件转换程式 - 可简单将文件作简、繁之间转换,让两岸不再有文件的困扰。
IP 地址: 已登录
职务: 超级管理员
等级: 师长
注册: 2004年6月1日
区域: 中国广东省中山市
积分: 1,017
精华: 1
发贴: 713
判断资源的位置和资源类型
伟乾(汉化新世纪)
现在软件开发工具很多,编译出来的软件的资源类型也是各种各样。用一种方法、一个工具来汉化不同类型的软件是不现实的。我们必须根据不同的资源类型,采用不同的方法进行汉化。
(一)资源的类型
通常软件中需要汉化的资源,是放在.exe和.dll格式的文件中,有些软件的资源放在专门的语言文件中,一般都是文本文件,扩展名五花八们,随作者喜欢。
个别软件的资源,作者在编译时就隐藏起来,根本无法找到。碰到这样的软件,除了反编译,没有别的方法了,不过这种情况比较罕见。找到需要汉化的资源位置后,还需查清楚资源的类型。
从汉化的角度看,资源的类型可分为 6种:
①VC类标准资源(包括Menu、Dialog、String、message table资源);
②Delphi类标准资源(Rcdata资源);
③非标准的Unicode字符(主要是一些VB编译的程序,程序的Unicode字符不出现在Menu、Dialog、String等资源中,有少数VC、Delphi编译的程序含有少量这样的字符);
④非标准的Ascii字符(指的是不出现在String、Rcdata等资源中Ascii字符);
⑤语言文件(一般指包含语言资源的文本文件,扩展名多由作者随意取);
⑥其它(包括Batmap资源中的文字等等)。
这里的资源分类,纯粹是从汉化的角度,所谓的标准资源,只是我们汉化起来比较方便而已:-)
下面,我们通过具体的软件汉化实战讲解如何判断资源的位置和类型。
准备工具:eXeScope 5.12 或 Resource Hacker 2.4.0.2
Hex WorkShop 3.02
由于大多数软件的资源都放在exe或dll文件中,我们查找资源一般都是先看看在exe/dll文件中是否存在需要汉化的资源和资源的具体类型:-)
我们可以使用exe资源查看修改软件:eXeScope 或 Resource Hacker ,将软件目录的所有的exe
dll文件打开,一一查看里面的资源,看看是否有我们需要汉化的资源(Nenu、Dialog、String或Rcdata等)。
(1) 实战一:判断程序 Opera 的资源
运行eXescope,选择菜单"文件|打开"或工具栏的打开按钮,出现"打开"对话框,在"搜索"标签项选择Opera程序的目录,Opera目录的所有exe、dll文件和子目录都显示了。(如图 1)
一一选择当前目录和子目录所有的exe、dll文件打开,查看是否有需要汉化的资源。我们首先选择打开文件 "Opeay32.dll",在eXeScope的信息列表窗口显示"Opeay32.dll"的文件头、导入、导出等信息,没有汉化需要的资源(resourse)信息(如图 2),表明在这个文件中没有我们要找到东西,pass。
打开下一个文件"Opera.exe",在信息列表窗口显示有"Resource"资源项。单击"Resource"资源项左边的标志 + ,显示文件"Opera.exe"的具体资源项。其中 Menu、Dialog、String和Rcdata 属于前面说过的第 1、2类资源。(如图 3)
查看这几个资源的具体内容,单击"Menu"资源左边的标志 + ,出现很多子项。单击选择任一子项,在eXeScope右边的信息显示窗口显示这"Menu"子项的资源内容(如图 4)。我们现在证实了这个文件里有我们需要汉化的资源,你可以直接在这里修改汉化,也可以使用其它汉化工具汉化。
按照以上方法,继续把其它的exe,dll文件打开,区分那些有资源的,那些没有资源的。我们另建一个目录,把需要汉化的文件全部复制过去,就可以进行下一步的汉化工作了。
我们举的例子Opera,是标准的VC资源,里面的rcdata资源非常简单,与标准的delphi资源里面的rcdata资源差别很大。下面,我们再举一个标准的delphi资源例子。
(2) 实战二:判断程序 browsermaster 的资源
打开文件"bmstrj.exe",显示只有String、Rcdata资源项,而没有Menu、Dialog资源项。这个就是典型的delphi/c++Build编译程序的资源特点,需要汉化的资源主要在Rcdata中。选择具体Rcdata子项,在信息显示窗口显示具体Rcdata子项(窗体)的内容(如图 5)。同样,可以在这里修改汉化,也可以用其它汉化工具汉化。
注意:1.有时使用eXeScope打开文件时,会出现以下的错误信息(如图 6)。可能程序正运行或文件设了只读属性,此时关闭该程序或把该文件去掉只读属性即可!
2.打开文件正常,可以看到具体的资源项和资源子项,但单击资源子项,想查看子项的内容时,出现这样的信息窗口(如图7),无法查看资源子项内容。这是因为文件使用了一些压缩加壳软件加密过,这就需要对文件进行解压脱壳处理后,才能汉化。这样的程序很多,如Acdsee,Winxfile等等。
(3) 实战三:判断程序 Vopt99 的资源
Vopt99是用VB编译的程序,资源类型与上面两个例子不同。我们打开Vopt99目录的exe,dll文件,都找不到menu、Dialog、
String或Rcdata之类的资源。(如图 8)
在Vopt99的运行界面(如图 9),记下&Defrag 和 Files and Folders 两个字符串。你一定奇怪:菜单显示的是Defrag,为何在前面加一个'&'?这是Windows标准菜单的一种默认的快捷方式,你看到Defrag菜单的D字母下面有下划线,表示用户同时按下Alt和带下划线的字母时,就可以选择相应的菜单项。表现在资源字符中,就是在字母前面加“&”。
使用16进制编辑软件 Hex WorkShop 打开Vopt程序的主文件Vopt99.exe,选择菜单“编辑|查找”,出现“查找”对话框,在类型标签选择“文本字符串”,值标签填写“&Defrag”,选项标签选择“ASCII 字符串”,按“确定”。(如图 10)
程序找到一个“&Defrag”字符串,高亮显示。按“F3”继续查找下一个,我们找到两个“&Defrag”字符串。(如图11,图12)
分别选改这两个字符串为“&Defra1”“&Defra2”,保存。运行Vopt99程序,会看到修改后的效果,证实这两个字符串是需要汉化的资源。(如图 13)
按以上方法,搜索字符串“Files and Folders ”,没有找到字符串。我们在选项标签改选择Unicode 字符串,按“确定”按钮。(如图 14)
程序找到一个“Files and Folders ”字符串,高亮显示。按“F3”继续查找下一个,文件只有这个字符。(如图 15)
注意:1.在Vopt99这个例子中,需要汉化的资源有“非标准的Unicode字符”和“ASCII 字符”两种;
2.一般查找文件的汉化资源,发现没有①VC类标准资源(包括Menu、Dialog、String资源)和②Delphi类标准资源(Rcdata资源),只需要使用Hex WorkShop 打开程序的主文件,查找有没有界面出现的字符,而不用一一打开所有的exe和 dll文件,因为一般程序的“非标准的Unicode字符”和“ASCII 字符”都在主文件中。
3.汉化时,发现有些程序VC类标准资源和Delphi类标准资源这两类都进行了汉化,运行时还是有英文出现,这是因为文件里存在少量的“ASCII 字符”资源需要汉化,个别情况下,是因为存在少量的“非标准的Unicode字符”资源需要汉化。
(4) 实战四:判断程序 CompuPic 的资源
我们首先看看程序CompuPic是否是第 1或 2种资源,用 eXeScope打开程序CompuPic目录的文件,只发现有一个Dialog子项(如图 16)。但这个程序不可能只有这点资源,一定还有其它资源类型。
运行CompuPic程序(如图 17),选取菜单出现的字符串,我们这次选取复杂一点的“D&isconnect Network Drive”。使用16进制编辑软件 Hex WorkShop 打开CompuPic程序的主文件,查找“D&isconnect Network Drive”。在选项标签不论选择Unicode 字符串或ASCII 字符,都没有找到字符串“D&isconnect Network Drive”。打开其它exe,dll文件,结果都一样,没有找到字符串“D&isconnect Network Drive”。说明这个程序存在其它的资源类型,我们继续找。
这里可使用Windows的查找功能,选择“开始|查找|文件或文件夹”。(如图 18)
出现“查找对话框”后,在“包含文字”标签下填写“D&isconnect Network Drive”,搜索标签选择CompuPic所在的目录,注意“包含子文件夹”标签要选定,按“开始查找”。发现在子目录ENGLISH中 main.msg文件包含这个字符串(如图 19)。打开这个文件,发现是文本格式的文件,就是我们前面说的第⑤中资源类型:语言文件。
(5) 其它资源类型
有些软件的英文字符比较特别,不是出现在以上的几种资源类型中,而是在图片中。对于VC编译的程序来说,是存在Bitmap 资源中。如程序Ember的工具栏按钮(如图 20),Remove IT99的其中一个界面(如图 21)
对于delphi编译的程序来说,这种图片资源是内嵌在Rcdata子资源项中的,eXeScope程序是无法看到和修改这种资源类型的,只能用另一汉化工具 Language localizator 查看和修改。
程序winace的sfxlib.dll文件的资源比较特别(如图 22),有个SFX资源项,SFX的资源子项导出来,再用 eXeScope打开(如图 23),可以看到好像一般的exe文件的资源。汉化时,我们先导出来,汉化后再导进去。这个程序的SFX资源子项都用 Petite压缩程序加了密,首先需要脱壳后,才能进行汉化。
一般来说,汉化的资源就是以上这几种,只要你按照以上方法,一般都可以找到需要汉化的资源。不过我不能保证你一定能找到需要汉化的资源,因为有些程序编译时,就对资源进行了处理,将资源隐藏起来,根本无法用上述方法找到。
疑难解答:
①有朋友问,如果软件的文件很多,用eXeScope一个个打开,你想要了我的老命?有没有简便的方法?
其实迅速排除无关的文件的方法还是有的,你运行程序,然后打开程序的目录,选择全部文件,删除。程序正在调用的文件,是无法删除的,我们有时就是这样做某某程序的精简版。不过这个方法不太保险,在少数情况下,某些程序暂时没有调用的文件被删除,造成某些功能丧失,也使某些汉化资源遗漏。
还有一种方法,可以快速找到某些汉化的资源在那个(些)文件中。如果资源类型是VC标准资源格式的菜单、对话框、字符串、信息表,我们可以使用 PASS Resource Finder 工具,可以在指定目录中查找含有指定字符串的资源的文件,是在进行汉化之前用来定位资源所在的辅助汉化工具。如果是delphi标准格式的汉化资源,上述方法无能为力。因为Radata资源是 ASCII字符,所以我们可以使用上文说的“使用Windows的查找功能”查找文本资源的方法,在指定目录查找含有指定字符串的资源的文件。
②有汉化人问:汉化某个软件,主要的界面、对话框都汉化了,发现运行时还是有少数英文字符,我按照你说的上述方法查找,把程序目录里的文件都打开检查,排除是非标准的unicode、ascii字符或文本文件。
出现这种情况,在排除汉化人遗漏了ascii、unicode等原因。我们都知道,程序安装时,有时会往注册表、windows的system目录下放文件或写东西。有时候,某些个别汉化资源就在这些地方,你可以到这些地方找找。有一些软件的安装后,会往系统的右键菜单添加命令,这些命令菜单的汉化资源的文件,往往在system目录里。
我们找到资源、了解了资源的类型,就可以使用不同的汉化工具进行汉化了。汉化并不是很困难的事情,需要的是你的认真态度、“咬文嚼字”的细心、耐心与责任心!仅此而已……在以后的教程中,我们将由简入深,系统讲解汉化知识。为了使更多的计算机用户掌握这门技术,我们把长期收集汉化教学资料和自己汉化心得重新总结,将通过大量的实例,以步步为营、手把手的教学方式,让读者轻松快速地掌握软件汉化的技术和基本技巧。在本教学中引用了大量的他人的成果。本教学目前正在制作中。也欢迎你提出自己的建议和看法(weiqian@21cn.com ),共同完善。如有错误欢迎指正!有关软件你可以到我们的总站--汉化新世纪下载
IP 地址: 已登录