Moodle语言包的二次开发
1.了解Moodle语言包的结构
Moodle中几乎所有在页面上看到的文本都是从一系列的语言文件中动态获取的,这些文件被称为Language File或者String File。这些文件通常按照语言代码的文件夹存放在lang目录中,比如en_uft8、zh_cn_utf8,并且以php为扩展名。文件内以字符串的形式定义了界面的文本,如:
$string“[action”]=“Action”;
$string“[activemodule”]=“Active Module”;
然后在界面引用时使用如下语句,即可显示相应的文本:
print_string“(action”);
print_string“(activemodule”);
或者,将文本赋给变量,如:
$activemodule=get_string“(activemodule”);
开发新的Moodle语言包的过程就是将Moodle的英文语言包中的文本翻译成其他语言。
2.开发方法
Moodle一般会提供多种国家的语言包支持基本的Moodle界面,扩展模块如果按照约定来设计的话也会有相应的英文语言包,但是不一定会有相应的其他语言的语言包。在你决定开发某种语言包时首先使用Moodle的管理工具进行语言包的升级,将相应的语言包下载到本地机,然后在其基础上进行翻译;如果找不到相应语言包的话那么可以新建语言包,Moodle建议新建语言包时能联系Moodle的翻译合作伙伴(translation@moodle.org),确定新语言的代码。
如果我们需要使用简体中文的话,那么我们很幸运,已经有用户为我们提供了部分语言的翻译,下面步骤可以进行语言包的开发。
使用管理员账号登录你的Moodle系统,在Administration>Language的选项中,你可以进行语言包的管理:
·下载语言包;
·检查语言包的翻译情况;
·对未翻译的文本进行处理。
3.贡献发布
贡献语言包可以帮助更多和你使用相同语言的用户,我们可以将语言包压缩成zip文件,然后发送到translation@moodle.org,Moodle的翻译伙伴会为你提供更多的信息。
Moodle Theme的二次开发
1.了解Theme结构和开发约定
Moodle拥有一个强大的Theme系统,可以通过XHMTL和CSS进行界面效果的修改。Moodle的Theme中定义了多层样式,分别是站点级别(Site Level)、课程级别(Course Level)/用户级别(User Level)和页面级别(Page Level),可以让用户多层次地进行样式风格的定义。如图4所示。Moodle目前使用的版本有稳定版1.5、1.6、1.7和开发版1.8,其中1.5、1.6和1.7及其后续版本,它们的Theme结构是不一样的,因为各版本的XHTML结构进行了升级。
Moodle的Theme存放在Theme文件夹中,每个子文件夹就代表一套Theme,在每个Theme的子文件夹中都包含下表中的文件和文件夹。表3 Theme文件夹结构设计Theme时,开发者可以将多个文件夹中的CSS文件整合使用,其过程就是重新定义和添加CSS的样式。
2.开发方法
要创建新的Theme,最好是从当前使用版本中的标准Theme开始。我们可以复制一个文件夹,将文件夹名字修改为新的名字,然后就可以开始设计新的Theme了。主要的工作就是将原子目录中的内容进行重新定义,设计新的图标、整体风格、色彩体系、字体和布局。对CSS和XHTML不熟悉的用户可以参考http://docs.moodle.org/en/Theme_sources上的资源进行CSS和XHTML的学习.
3.贡献发布
在完成新Theme的设计后可以通过http://moodle.org/mod/data/view.php?d=26进行发布,需要提供下载地址、演示站点、版本信息和截屏等信息。
Moodle模块的二次开发
1.了解模块结构和开发约定
Moodle的模块是Moodle中最具扩展性的构架之一,因此需要开发者对PHP和MySql都应该有一定的开发能力,并且还要对Moodle模块的结构有一定了解。要学习PHP和MySql,可以参考有关的书籍。4表是Moodle模块的目录结构。
将新模块文件夹放到Moodle目录下的mod目录下,就可以让Moodle发现和使用新模块。Moodle在管理界面下可以进入Maintenance(维护)模式,对所有的模块和插件进行检测。对于模块来说,Moodle会检测mod文件夹下所有的子文件夹:对于已有模块的文件夹,Moodle会检测version.php,比较系统中的模块版本和文件夹中的模块版本是否一致,如果一致就不作任何操作,如果不一致就进行版本更改的操作;对于新模块的文件夹,Moodle会将该文件的名字作为模块的名字,并读取db文件夹下的.sql文件,将其中的script程序在数据库中执行以生成新的数据表格和初始化数据。一切工作完成后,就可以在课程中使用新的活动类型了。
在模块的开发时要注意一些基本的约定,特别是对于lib.php这个函数库文件,要求必须定义下面的方法:
newmodule_add_instance()添加一个模块记录到数据库;
newmodule_update_instance()更新数据库记录;
newmodule_delete_instance()删除一个数据库记录;
newmodule_user_outline()传递一个实例,返回用户贡献的总结;
newmodule_user_complete()传递一个实例,返回用户贡献的细节。
其中斜体部分的newmodule为新建模块的名称,这个名称一般为不含数字和其他特殊符号的单个英文名称。即便你不需要某个方法,也要进行定义,方法体可以为空,或返回空的结果。
2.开发方法
新模块的开发可以通过下面几个步骤完成(忽略对PHP和MySql的掌握程度),我们使用最简单的文本编辑器就可以完成下列步骤:
·从moodle.org下载开发模版(http://download.moodle.org/download.php/modules/NEWMODULE.zip)。其中包含了上文提到的所有文件和文件夹,且在lip.
php中定义了所有必要的方法。
·解压缩文件到任意文件夹。
·将文件夹名改为你的新模块名,比如bulletin。
·将文件夹下所有文件中的NEWMODULE文本替换为bulletin。
·如果需要用到数据库,那么在db/mysql.sql文件中编写sql数据库定义语句,注意在创建表格时使用模块名作为前缀,比如bulletin_posttable,这样可以避免
表格重名。同时编辑db/mysql.php文件,设置模块名和版本号。
·创建模块的语言包文件,建议默认使用英文语言。避免将文本直接在页面上硬编码,便于语言版本的更换,比如,创建如下目录:lang/en_utf8/bulletin.
php,然后在文件中输入你需要在界面上显示的文本。
<?php
$string[‘modulename’]=’Bulletin’;
$string[‘modulenameplural’]=’Bulletins’;
?>
·将整个模块文件夹复制到moodle/mod目录下。
·在管理站点中,开启维护模式,再访问
Administration页面,你会看到Moodle会提示注册新的bulletin模块。
注意version.php文件,如果你要升级安装你的新模块的话,注意将版本号修改为更大的数字(日期)。
然后,你就可以在这个课程中添加这个模块了。
当然还有很多数据库操作(lib.php)和使用界面(mod.php,index.php和view.php)的代码需要编写,并且在Moodle中进行测试。
3.贡献发布
在完成新模块的开发和测试后,我们可以将模块压缩打包发布到http://moodle.org/mod/data/edit.php?d=13。建议除了发布源文件包外,还要提供help文档,这
样便于大家共享使用。
|