[摘要] 在论坛软件多样化的今天,要选择一个功能强大、使用简单的软件,phpBB 2应该是个很好的选择。phpBB 2作为一种典型的论坛软件,支持多语言化,且还是开放源代码。但由于原版软件的界面是英文,为了此论坛软件适合在国内应用,笔者对此软件进行全面汉化。本文首先是阐述软件汉化的一些概念和问题;其次,对phpBB 2的模块和功能进行分析,使其能达到更好的汉化效果;最后,是phpBB 2在公司Intranet网上的应用,并结合了公司科学技术方面的交流,建立一个适合科技人员的论坛-科技学术论坛,同时分别在MySQL和MS SQL数据库中应用。
关键词: phpBB 2 软件汉化 PHP 论坛 模块
汉化软件在网络中多如牛毛,汉化也促进了我国计算机用户对国外优秀软件的了解和认识,提高了我们的效率;而对于那些作者们来说,则是一种学习先进软件思想的捷径。 汉化只是一种手段,我们需要的并不是汉化软件,而是以后能开发出更多优秀的国内软件。
论坛软件多样化的今天,在网络中的应用也相当多,phpBB 2作为一位异军突起的后来者,具有功能强大、使用简单、兼容性好、支持多语言化等特点,但目前不支持中文,如果使该软件支持中文并应用,需要对软件的语言模块进行汉化。本文主要探讨的是软件汉化的概念和问题以及phpBB 2的汉化,结合集团公司科学技术方面的交流,建立一个适合科技人员的论坛-科技学术论坛,并且分别在MySQL和MS SQL数据库中应用。
汉化环境:操作系统Windows 2000,编辑器EditPlus 2.11,翻译软件金山词霸.net 中日英版。
应用环境:操作系统Windows 2000,Web环境Apache 1.3.22+PHP 4.1.1,数据库服务器MySQL 3.23.47和Microsoft SQL Server 2000。
1 phpBB 2软件简介
phpBB 2是一个论坛软件,使用PHP网络语言开发的。PHP(PHP Hypertext Preprocesser的首字母缩写)作为目前网络语言的一个佼佼者,特点为:是一种在服务器端执行的脚本语言,可以很好地和HTML融合,产生需要的文档;与大多脚本语言或编程语言(Perl、Python)一样,都是与平台无关,且是开放源代码;PHP是专门为WEB设计,在这领域非常优秀;支持多种数据库,包括常用的Oracle、Sybase、MS SQL、Informix、MySQL、mSQL等等。
phpBB 2是基于模块化设计,具有专业性质、安全性高、支持多语言界面、支持多种数据库和自定义的版面设计等优越性能,而且功能强大。另外,还是开放源代码,遵循《GNU通用公共许可证》。
主要支持的数据库有MySQL、PostgreSQL、MS SQL、MS Access (ODBC)、Oracle、DB2等,主要的功能有无限制的论坛类及帖子、类似Email的私人消息通信系统、搜索、表情图形、个性化设置、用户及用户组管理、安全管理及友好的管理中心等等,是目前论坛软件的一种主流模式,适合于各种论坛。
2 关于软件汉化
2.1 软件汉化的定义
软件汉化是指一个外文版的软件(或绝大部分是外文)经过一系列本地化的技术处理后,把操作界面(如: 菜单、对话框、提示、帮助等)翻译成中文,而程序内核和功能保持不变。
由于PHP语言是一种解释性语言,在执行之前不用通过编译器编译,如需要汉化的话,则要直接获取源代码,当然PHP语言开发的软件很多是开放源代码的,所以汉化过程是直接通过对源程序中的文字进行翻译,不同于经过编译的可执行程序(一般不开放源代码)的汉化。因此,phpBB 2的汉化是对源代码中的整个语言模块的翻译。
2.2 软件汉化的工具及方法
汉化工具主要包括编辑器和翻译软件(金山词霸、东方快车等)。
可执行程序的汉化编辑器主要有:
① Visual C++ 6.0 用于打开EXE、DLL、PKG等软件的资源进行汉化;
② UltraEdit用于对EXE文件进行HEX方式修改和汉化后期的修补,主要针对于普通的字符串;
③ eXeScope用于修改Delphi、VB设计的软件的对话框,主要针对于无法使用VC以资源方式打开的程序;
④ Patch 1.02 中国软件汉化同盟内部开发工具,用于制作补丁包;当一个软件汉化完毕后,使用它生成汉化补丁,用于发布。
从可执行程序的汉化编辑器中我们可以想到:PHP软件的汉化也需要一个汉化编辑器。其汉化编辑器主要考虑的因素是具有支持PHP和HTML语法、使用简单、项目管理等功能,拥有这些功能的编辑器有UltraEdit-32 9.20+(http://www.ultraedit.com)、EditPlus 2.11(http://www.editplus.com),虽然UltraEdit-32 9.20+功能强大,但在支持PHP语法性能上不如EditPlus 2.11,EditPlus 2.11支持的语法主要有:HTML、CSS、PHP、ASP、Perl、C/C++、Java、JavaScript等,还可以由用户自行扩展程序的语法文件。汉化的编辑器选择了EditPlus 2.11。
汉化方法主要有:
① 使用自动化工具进行汉化,如CPATCH、东方快车的永久汉化;
② 使用手工化工具进行汉化,即直接通过人工翻译;
③ 使用自动与手工合作的方法汉化,如编辑器与翻译软件的结合。
利用EditPlus把phpBB 2源代码建立成一个项目,此项目中的语言模块可以结合金山词霸进行手工汉化。
2.3 汉化涉及到的法律问题
通过查看软件的协议,获知软件是否限制汉化。但作为普通的应用程序来说,汉化后发布的是原版软件的中文汉化补丁(不改变原版软件的内核和功能),也就是它的一个外挂插件,不属于该软件本身的一部分,并且没有盈利性质,不属于侵权。同时,汉化也不是盗版,汉化完全是独立性质的补丁程序,版权归汉化作者自已。对于phpBB 2这种开放源代码的软件来说,就更涉及不到侵权或盗版问题,只要汉化后的模块遵循《GNU通用公共许可证》,就可以进行发布。
2.4 软件汉化的流程
根据以上几点的论述,针对PHP(ASP、Perl)这种脚本语言所开发的软件的汉化过程进行流程化,脚本语言根据软件模块化的特点,一般都将软件的操作界面建立一个独立的语言模块。流程图如图1所示,此图只适应脚本语言开发的软件。
3 phpBB 2软件的汉化
3.1 建立汉化环境和测试环境
在软件汉化的叙述中,曾讲述建立phpBB 2的汉化环境:利用EditPlus 2.11把phpBB 2源代码建立成一个项目PHPBB,此项目中的语言模块可以结合金山词霸进行手工汉化。
因为phpBB 2是在Web服务器+PHP+数据库的环境下运行的,可以选择目前最为流行的Apache 1.3.22作为Web服务器,PHP可以选择稳定版本PHP 4.1.1,数据库服务器为MySQL 3.23.47和Microsoft SQL Server 2000。
3.2 phpBB 2软件的模块和功能分析
3.2.1 模块分析
phpBB 2作为一个优秀的论坛软件,需要对其进行汉化,首先要分析软件的各个模块和功能。phpBB 2
采用一种常见的模块分配方式,其基本模块如图2所示。主要有如下说明:
l /─软件的根目录,有数据库连接配置、论坛实现各项功能的脚本及安装说明等。
l /admin/─实现论坛管理的程序,用于论坛的一般设置、权限设置、类别管理、用户管理、风格管理等。
l /db/─数据库类及SQL语句,支持多种数据库的类及相应的SQL语句,例如支持MySQL(mysql.php)、MS SQL(mssql.php)、Oracle(oracle.php)数据库的类sql_db。
l /docs/─软件的说明文档,软件的常见问与答、更新日志、修复BUG日志等。
l /includes/─软件的重用模块,定义了一些常用的函数、类等。
l /images/─公用的图形,即表情图形(smiles)和个人头像(avatars)等图片。
l /language/─各类语言,支持多语言,默认语言是英语(lang_english),还可以建立其他的语言模块,例如:汉语、法语、日语等。
图 1 脚本语言软件的汉化流程图
图 2 phpBB 2软件的基本模块布局
l /templates/─软件界面的风格模板,用户可以自定义风格模板(subsilver)-操作界面模板。
通过这些分析,phpBB 2软件有一个语言文件夹/language/和操作界面的图片文件夹/templates/subsilver/images/,默认语言是英语(/language/lang_english/),所有的语言模块都包含在这两个文件夹中,有六个模块:
l /language/lang_english/lang_admin.php─管理区操作界面。
l /language/lang_english/lang_main.php─普通用户区操作界面。
l /language/lang_english/lang_faq.php─软件的常见问与答。
l /language/lang_english/lang_bbcode.php─BBCode代码指南。
l /language/lang_english/email/*.tpl─消息操作的提示信息。
l /templates/subsilver/images/*_english.gif─含有语言文字的操作界面图片。
phpBB 2语言模块的应用,是通过PHP脚本调用语言模块,然后与操作界面模板相结合,产生用户需要的HTML文档, 如图3所示。
图 3 phpBB 2语言模块的调用
3.2.2 功能分析
为了汉化的合理性、正确性、简明性,对软件进行功能分析是很有必要的,只有了解其功能,才能从专业术语角度上来表述语句,可以根据用户进行的操作来分析。
从权限范围上说,从大到小的顺序,把用户按如下排列:系统管理员à论坛管理组管理员à论坛管理成员à普通用户à游客。上一级用户除了拥有自己的权限外,还包含下一级用户的所有权限。每类用户都拥有自己相关的权限,也就是可以在论坛中进行一些什么样的操作,可以使用哪些功能。对功能的分析,可以按每一级的用户来说明。
(1)普通用户
l 发表/回复主题:可以选择感兴趣的栏目发表主题,也可回复他人的主题,都可以使用BBCode代码、HTML代码和表情图形,对自己发表的帖子拥有编辑、删除、引用等权利;
l 添加/参与调查:对自己发表的主题增加相关的调查,可获知其他用户对此问题的看法;也可参与其他用户发动的调查;
l 收发私人消息:一个类似Email的私人消息通信系统,用户之间可以通过此系统互发消息,同时对自己邮箱中的消息可以保存、删除;
l 加入/退出用户组:论坛中会有多个用户组,用户可以根据自己的需要加入某个用户组,则可以更好与此用户组的用户进行交流;
l 搜索:通过搜索功能,所有用户都可以查找需要的主题/帖子;
l 个人资料管理:用户可以修改自己的个人资料,主要有一些基本信息(联系方式、兴趣爱好、个人签名等),用户在论坛中的个性化设置(操作界面风格、语言、时区等),还可以上传个人头像。
(2)论坛管理员
l 管理主题/帖子:对本论坛的主题/帖子,可以编辑、删除、移动、加锁/解锁、分离等操作,维护本论坛的日常运行。
(3)系统管理员
l 论坛管理:类别管理-系统管理员可以对论坛的类别进行增加、删除、编辑、移动等操作,并对各类别的论坛撰写简要的文字说明,有利于引导用户进入论坛中讨论;权限管理-设置哪一级别的用户对论坛所拥有的权限(浏览、阅读、发表、回复、编辑、删除、引用、公告、投票、创建调查等);数据管理-主要对长时间没有回复的主题进行剔除,也可剔除陈旧数据。
l 论坛配置管理:备份数据库-为了论坛能安全、稳定的运行,常要对数据进行备份;恢复数据库-当前的数据受到损坏时,可恢复到上次备份数据的状态;常用配置-论坛的一些基本配置;表情图形-增加、删除、编辑表情图形;文字过滤-设置一些不合法的字符或单词,可防止论坛受到恶意的攻击。
l 用户组管理:可以增加用户组,并可以编辑、删除用户组及设定用户组的权限。
l 风格管理:可以创建、编辑、导出风格模板,建立多种论坛的风格,以使用户得到个性化的论坛。
l 用户管理:用户取缔-可以禁止恶意的用户访问论坛,甚至取缔其用户资格;管理-对所有的用户都可以编辑、删除;权限设置--设定用户的权限,即超级管理员、论坛管理员、普通用户,可以控制每个用户的操作,以及用户的级别管理。
3.3 语言模块的翻译
语言模块的翻译,就需要新建中文语言模块的文件夹lang_chinese和操作界面的图片*_chinese.gif,所有这些包含了上述的六个语言模块。
对language中的语言模块的分析,可以得知每个语句都是用数组来存储,翻译前的lang_main.php如下:
// lang_main.php
……
//setlocale(LC_ALL, "en");
$lang['ENCODING'] = "iso-8859-1";
……
$lang['Register'] = "Register";
$lang['Profile'] = "Profile";
$lang['Edit_profile'] = "Edit your profile";
$lang['Search'] = "Search";
$lang['Memberlist'] = "Memberlist";
$lang['FAQ'] = "FAQ";
$lang['BBCode_guide'] = "BBCode Guide";
$lang['Usergroups'] = "Usergroups";
……
$lang['Enter_password'] = "Please enter your username and password to login";
$lang['Login'] = "Login";
$lang['Logout'] = "Logout";
……
英语的默认编码是西欧iso-8859-1,则首先要把编码更改为简体中文gb2312。语句翻译需要保证合理性、正确性、简明性,翻译后的lang_main.php模块如下:
//setlocale(LC_ALL, "cn");
$lang['ENCODING'] = "gb2312";
……
$lang['Register'] = "注册";
$lang['Profile'] = "个人资料";
$lang['Edit_profile'] = "编辑您的注册信息";
$lang['Search'] = "搜索";
$lang['Memberlist'] = "用户列表";
$lang['FAQ'] = "问与答";
$lang['BBCode_guide'] = "BBCode 指南";
$lang['Usergroups'] = "用户组";
……
$lang['Enter_password'] = "请输入用户名和密码";
$lang['Login'] = "登录";
$lang['Logout'] = "退出";
……
通过翻译英文的语言模块,建立起中文语言模块,论坛的注册用户则可以选择自己需要的语言(英文或中文),如图4中(a)、(b)所示。
(b)中文界面
图 4 英文、中文界面
由于翻译过程中常牵涉到很多网络上的常用术语,为了翻译准确,不能只做普通的文字翻译,需要了解phpBB 2中的每个功能以及一些中英文在网络术语中的表述差异,例如:profileà个人资料,avatarà个人头像,messageà私人消息,smileà表情图形,Word Censoringà文字过滤,等等。
图片上的语言文字翻译直接在*_english.gif文件上把英文修改成中文,另存为*_chinese.gif就可,应该注意风格上的统一,如下表所示。
英中文操作界面图片对照表
图片
语言 英文 中文 英文 中文
文件名 post_english.gif post_chinese.gif icon_profile_english.gif icon_profile_chinese.gif
3.4 语言模块的测试
要通过不断的单元测试和模块测试来完善或纠正汉化BUG,对应翻译的语句找出其相应的页面输出,验证汉化后的合理性、正确性、简明性,这一步骤是汉化人员来实施的。只有通过反复的测试,才能使汉化的模块更准确。例如:Using the form below you can split a topic in two, either by selecting the posts individually or by splitting at a selected postà使用以下的表单您可以分离帖子变成两个,您可以选择分离一个或多个帖子,此语句出现在论坛栏目管理员对本栏目主题管理的 "分离主题控制栏"中,就可以测试所要进行的操作与语句表述的是否一致。
测试的下一个过程是α-测试和β-测试,α-测试是一个用户以开发者的身份来实施,可以由汉化小组组织一些人员对汉化后的语言模块进行测试,记录发生的错误和使用问题(主要是语句的理解问题)。β-测试是软件的最终用户以一个或多个用户的身份进行的,就是任何一个用户都可以参与测试,对每个汉化的语句可以提出其不合理性、难以理解及错误等问题,然后就可做出相应的修改。完成这些测试后,才能对用户发布整个汉化包。
4 phpBB 2的应用
对phpBB 2整个语言模块的翻译及测试,也就意味着phpBB 2论坛软件可以支持中文了,结合实际需要,完全可以建立起一个符合要求的论坛。
在对phpBB 2的应用中,建立了一个围绕集团公司科学技术交流方面的论坛-科技学术论坛,由于phpBB 2支持多种数据库,所以其应用建立在两种数据库环境下:MySQL和MS SQL。MySQL与MS SQL相比,各有自己的优势,都适合中小型的应用,但MS SQL更适合于企业级应用。当更改数据库时,只需对根目录下的配置文件config.php修改连接数据库的参数,以下是连接MySQL和MS SQL数据库的配置文件。
<?php//MySQL数据库// phpBB 2.x auto-generated config file// Do not change anything in this file!$dbms = "mysql";$dbhost = "localhost";$dbname = "phpbb";$dbuser = "root";$dbpasswd = "password";$table_prefix = "phpbb_";define('PHPBB_INSTALLED', true);?> <?php//MS SQL数据库// phpBB 2.x auto-generated config file// Do not change anything in this file!$dbms = 'mssql';$dbhost = 'JSS';$dbname = 'phpbb';$dbuser = 'sa';$dbpasswd = 'sa';$table_prefix = 'phpbb_';define('PHPBB_INSTALLED', true);?>
图5是在MySQL数据库中的应用。
在这两种环境中,MySQL完全可以体现出速度的优越性。浏览首页时,连接MySQL数据库,进行10个查询,只用了0.142413秒;连接MS SQL数据库,也是进行10个查询,而且返回的数据要少,却用了0.243156秒。在MS SQL数据库中,phpBB 2不支持数据备份和恢复功能,而在MySQL数据库中可以。
5 结束语
phpBB 2作为强大的论坛软件,对其进行汉化,可以说一个很好的软件开发学习过程,总结了脚本语言所开发的软件汉化流程,同时能真正地使用中文界面的phpBB 2论坛,建立起一个符合实际应用的论坛-科技学术论坛。对此软件应该要更深入的研究,不仅是汉化,还有其安全控制、消息系统、搜索、兼容性、个性化管理等功能,都是值得探讨。
参考文献
[1] (美)Jesus Castagnetto等著,薛忠胜等译、《PHP高级编程》、机械工业出版社、2001年3月
[2] 杨文龙等编著、《软件工程》、电子工业出版社、2001年12月
[3] http://www.phpbb.com(phpBB 官方网站)