phpcollabの日本語化に再チャレンジ

プロジェクト管理アプリケーションである、phpcollabのjpgraphとメール機能の部分の日本語化に再チャレンジ。

この部分は、以前phpcollabをインストールしたときにチャレンジしてうまくいかなかった経緯があったのですが、今回はうまくいったのでそのときの変更点をメモ。

環境:さくらインターネット

class.phpmailer.php

36行目「var $CharSet = “iso-8859-1”;」を「var $CharSet = “iso-2022-jp”;」に変更

var $CharSet = “iso-2022-jp”;

・424行目付近「 function MailSend($header, $body) { 」の次の行に以下の行を挿入

$body = mb_convert_encoding($body,”ISO-2022-JP”,”auto”);

・1141行目付近「 function EncodeHeader ($str, $position = ‘text’) { 」 の次の行に以下の2行を挿入

$str = mb_convert_encoding($str,”ISO-2022-JP”,”auto”);
$str = mb_encode_mimeheader($str,”ISO-2022-JP”,”B”);

allaboutで記載の方法のとおりでメールの文字化けは解消された。

jpgraphの文字化けは、こちらのページに書いている以下の方法をそのままんままねて設定することでうまくいった。

前回は、うまくいかなかったのがなぜかと思うぐらい。

ただ、jpgraphは、もともとphpcollabに付属しているものを使わないとうまくいかないよううだった。


// Directory for jpGraph TTF fonts. Must end with '/'
// Note: The fonts must follow the naming conventions as
// used by the supplied TTF fonts in JpGraph.
//DEFINE("TTF_DIR","/usr/X11R6/lib/X11/fonts/truetype/");
DEFINE("TTF_DIR","さざなみフォントのインストール先への絶対パス");

次に、200行目近辺のフォント定義を行っている箇所に、以下のように日本語フォントの定数を追加する。



DEFINE("FONT2",96); // Deprecated from 1.2
DEFINE("FONT2_BOLD",95); // Deprecated from 1.2
DEFINE("FF_GOTHIC", 40);
DEFINE("TF_GOTHIC", "sazanami-gothic");


続けて、「TTF」メソッド(1750行目あたり)で定義されている$font_files配列に、「FF_GOTHIC」配列を追加する。

????????????
FF_TIMES => array(FS_NORMAL=>'times', .....
FF_COMIC => array(FS_NORMAL=>'comic', ......
/* ここから追加 */
FF_GOTHIC => array(FS_NORMAL=>'sazanami-gothic',
FS_BOLD=>'sazanami-gothic',
FS_ITALIC=>'sazanami-gothic',
FS_BOLDITALIC=>'sazanami-gothic' ),
/* ここまで追加 */
FF_ARIAL => array(FS_NORMAL=>'arial', ......

さらに、4550行目あたりのStrokeTextメソッドで、テキストを描画する際に日本語フォントが使用されるよう以下の処理を追加する。


function StrokeText
($x,$y,$txt,$dir=0,$paragraph_align="left",$debug=false) {

$x = round($x);
$y = round($y);

// For Japanese
$this->font_family = FF_GOTHIC;
$this->font_file = TTF_DIR . TF_GOTHIC . '.ttf';

// Do special language encoding
以上の変更の結果、ガントチャートは日本語が化けずに表示されるようになった。