|
使用环境: Windows XP SP2 Apache 2.2.6 PHP 5.2.4 Mysql 5.0.37 所有配置皆为UTF-8编码 使用sourceforge.net下载的dotproject 2.1.1 stable版,汉化文件是从 http://rt.openfoundry.org/Foundry/Project/Download/?Queue=238下载的dotProject_2.1_RC2_20070529_UTF- 8_Chinese_by_Markwu.rar里面包含的local文件。 去下载最新版For PHP5的Jpegraph 2.3 替换Dotproject自带的Jpegraph目录,参照Dotproject的文件修改jpg- config.inc.php。 1、将simsun.ttc,simhei.ttf拷贝到lib/fonts下 2、指定TTF文件所在位置 define('TTF_DIR', './lib/fonts/'); 1和2这两步也可以不做,让JPGraph自己到Windows目录去找 3、定义CUSTOM_TTF_FONT变量,这样就不用去将Modules下的Gantt.php里面CUSTOM_TTF_FONT改成FF_SIMSUN。 DEFINE('CHINESE_TTF_FONT','simsun.ttc'); define('FF_CUSTOM', 30); define('CUSTOM_TTF_FONT', CHINESE_TTF_FONT); define('CUSTOM_TTF_FONT_BOLD', CHINESE_TTF_FONT); define('CUSTOM_TTF_FONT_ITALIC', CHINESE_TTF_FONT); define('CUSTOM_TTF_FONT_BOLDITALIC', CHINESE_TTF_FONT); 4、让UTF-8正常工作 DEFINE("LANGUAGE_CYRILLIC",true); DEFINE("CYRILLIC_FROM_WINDOWS",true); DEFINE('LANGUAGE_CHARSET', 'utf-8'); 5.修改jpgraph_ttf.inc.php 240行 /* Chinese fonts */ FF_SIMSUN => array(FS_NORMAL =>'simsun.ttc', FS_BOLD =>'simhei.ttf', FS_ITALIC =>'simsun.ttc', FS_BOLDITALIC =>'simhei.ttf' ), FF_CHINESE => array(FS_NORMAL =>CHINESE_TTF_FONT, FS_BOLD =>'CHINESE_TTF_FONT', FS_ITALIC =>'CHINESE_TTF_FONT', FS_BOLDITALIC =>'CHINESE_TTF_FONT' ), 有第3步,jpgraph_ttf.inc.php也可不必修改。 DotProject甘特图乱码,我自己看了3天,主要是PHP水平太水,找 不到哪里负责哪部分的功能实现。 做完以上5步,甘特图大部分都是汉字了,只是任务列表显示的任务还是乱码,这是怎么回事? module\tasks\gantt.php 360行 if ( $locale_char_set=='utf-8' && function_exists('utf8_decode') ) { $name = utf8_decode($name); } 把第361行的$name = utf8_decode($name)注释掉,本来就是UTF-8编码环境,不需要再解码。 这样任务列表也是正 常的汉字了。 TIPS: 1、php.ini 里的memory_limit设置大些,设置成4M时,Jpgraph就报错:内存不足。 2、PHP General :: Assigning the return value of new by reference is deprecated 出这个错误的解决。 将track_errors 设置为Off即可。产生这个Strict错误是因为dotproject里使用&返回new关键字创建的对象的地址 ,而&这个符号在PHP5里已不推荐使用。在error_reporting设为E_ALL& ~E_NOTICE,而打开track_errors时, Jpgraph库还是可以捕捉到这个警告,最终导致甘特图不显示。
|