|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2012/4/8 8:45 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [轉貼]如何將 dotProject 的Gantt 圖中文亂碼修正
- 如何將 dotProject 的Gantt 圖中文亂碼修正
如何 這裡是使用 dotProject 2.1.2 的版本來實作本補強手札, 其它版本請依需求自行修正!! ============================================================== | 本文章符合共享原則, 您可以隨意轉載, 但請註明出處以鼓勵作者的用心. | ==============================================================
1. 修正 JPGraph 設定 a. 修改Chinese預設字型檔 請打開文件 \lib\jpgraph\src\jpg-config.inc 找到設定項 [第73行]
DEFINE('CHINESE_TTF_FONT','bkai00mp.ttf');
替換紅色字
DEFINE('CHINESE_TTF_FONT','ARIALUNI.TTF');
註:ARIALUNI.TTF檔案可從本手札下載或由您自行尋找, 此為繁體中文Unicore字型檔, 大小為 23.275MB.
b. 增加中文字型對應(如Bold, Italic等) 請打開文件 \lib\jpgraph\src\jpgraph.php 找到程式碼 [第3106行]
FF_CHINESE => array(FS_NORMAL=>CHINESE_TTF_FONT, FS_BOLD=>'', FS_ITALIC=>'', FS_BOLDITALIC=>'' ),
替換整行宣告為
FF_CHINESE => array(FS_NORMAL=>CHINESE_TTF_FONT, FS_BOLD=>CHINESE_TTF_FONT, FS_ITALIC=>CHINESE_TTF_FONT, FS_BOLDITALIC=>CHINESE_TTF_FONT ),
2. 修改專案部份 Gantt 產生程式碼 a. 修改專案 Gantt 程式碼 請打開文件 \modules\projects\gantt.php 找到程式碼 [第131行]
//$graph->scale->actinfo->SetFont(FF_CUSTOM);
替換成
$graph->scale->actinfo->SetFont(FF_CHINESE);
找到程式碼 [第146行]
if (is_file(TTF_DIR . 'FreeSansBold.ttf')) {
$graph->scale->tableTitle->SetFont(FF_CUSTOM,FS_BOLD,12);
}
替換紅字為
$graph->scale->tableTitle->SetFont(FF_CHINESE,FS_BOLD,12);
找到程式碼 [第204行]
$bar->title->SetColor('red');
$graph->Add($bar);
在上面加上一行
$bar->title->SetFont(FF_CHINESE,FS_BOLD,8);
$bar->title->SetColor('red');
$graph->Add($bar);
找到程式碼 [第266行]
if (is_file(TTF_DIR."FreeSans.ttf")) {
$bar->title->SetFont(FF_CHINESE, FS_NORMAL, 9);
}
替換為
$bar->title->SetFont(FF_CHINESE, FS_NORMAL, 9);
找到程式碼 [第271行]
$bar->caption->Align('left','center');
在後面加上一行
$bar->caption->Align('left','center');
$bar->caption->SetFont(FF_CHINESE,FS_NORMAL,10);
找到程式碼 [第321行]、[第327行] (共兩處可一併被找到)
$bar2->title->SetFont(FF_CUSTOM, FS_NORMAL, 9);
兩處均將紅字替換為
$bar2->title->SetFont(FF_CHINESE, FS_NORMAL, 9);
找到程式碼 [第348行]
$bar3->title->SetFont(FF_CUSTOM, FS_NORMAL, 9);
替換紅字為
$bar3->title->SetFont(FF_CHINESE, FS_NORMAL, 9);
找到程式碼 [第367行] 在前面加上一行
$vline->title->SetFont(FF_CHINESE,FS_BOLD,8);
$graph->Add($vline);
找到程式碼串 [第211行起]
if ($locale_char_set=='utf-8' & function_exists('utf8_decode')) {
$name = ((strlen(utf8_decode($p['project_name'])) > 25)
? (substr(utf8_decode($p['project_name']), 0, 22) . '...')
: utf8_decode($p['project_name']));
} else {
//while using charset different than UTF-8 we need not to use utf8_deocde
$name = ((strlen($p['project_name']) > 25) ? (substr($p['project_name'], 0, 22).'...')
: $p['project_name']) ;
}
整串(紅字)替換為
$name = strlen($p["project_name"]) > 25 ? mb_substr($p["project_name"], 0, 22).'...' : $p["project_name"];
b. 修改專案 Gantt2 程式碼 (其實步驟跟前一項差不多, 但還是一樣一樣來) 請打開文件 \modules\projects\gantt2.php 找到程式碼 [第80行]
//$graph2->scale->actinfo->SetFont(FF_CUSTOM);
替換為
$graph2->scale->actinfo->SetFont(FF_CHINESE);
找到程式碼 [第93行起]
if (is_file(TTF_DIR . 'FreeSansBold.ttf')) {
$graph2->scale->tableTitle->SetFont(FF_CUSTOM, FS_BOLD, 12);
}
全部替換為
$graph2->scale->tableTitle->SetFont(FF_CHINESE, FS_BOLD, 12);
找到程式碼 [第151行]
$bar->title->SetCOlor('red');
$graph2->Add($bar);
在前面加上
$bar->title->SetFont(FF_CHINESE,FS_BOLD,8);
$bar->title->SetCOlor('red');
$graph2->Add($bar);
找到程式碼 [第166行起]
if (is_file(TTF_DIR . 'FreeSansBold.ttf')) {
$barTmp->title ->SetFont(FF_CUSTOM, FF_BOLD);
}
全部替換為
$barTmp->title ->SetFont(FF_CHINESE, FF_BOLD);
找到程式碼 [第224行]
if (is_file(TTF_DIR . 'FreeSans.ttf')) {
$bar->title->SetFont(FF_CUSTOM, FS_NORMAL, 10);
}
全部替換為
$bar->title->SetFont(FF_CHINESE, FS_NORMAL, 10);
找到程式碼 [第230行]
$bar->caption->Align('left','center');
在後面加上一行
$bar->caption->Align('left','center');
$bar->caption->SetFont(FF_CHINESE,FS_NORMAL,10);
找到程式碼 [第246行] 在前面加上一行
$vline->title->SetFont(FF_CHINESE,FS_BOLD,8);
$graph->Add($vline);
3. 修改任務 Gantt 程式碼 打開文件 \modules\tasks\gantt.php 修改編碼設定(原來已經為UTF-8編碼,不需再轉碼) [第361行]
if ($locale_char_set=='utf-8' & function_exists('utf8_decode')) {
$name = utf8_decode($name);
}
將以上程式碼全部刪除(紅字)
搜尋全文字串"FF_CUSTOM"全部替換成"FF_CHINESE"即可.
============================================================ 好了,這樣是不是全部都變中文了呢!! 這是一個很簡易的全部一次修改作法,如果您是程式專家,當然也可以根據原來的設定去變換不同的字型來使用,以增加專案系統的花樣,加油嘍!!
原文出處:如何將 dotProject 的Gantt 圖中文亂碼修正 - 交流討論 - dotProject - dotProject 專案管理 - 520 逐夢者之家 ::: Forever Version - Powered by Discuz!
|
|
討論串
|