その他の日本語対応と設定:さくらレンタルサーバーにdotProjectをインストールする(その3)

dotProjectをインストールして設定するシリーズの最終回です。

前々回インストール、前回ソースを弄ってガントチャートを日本語対応させました。

今回は積み残しの日本語対応である、年/月/日の表示と、名前を「姓・名」の順にする対応をしようと思います。

しかし前回同様、PHPで書かれたソースをかなり修正します。

最後に追加の設定もします。

dotProjectのバージョン

本稿は、dotProject 2.1.8に関して書いています。

ソースの修正は、dotProjectの異なるバージョンには対応しませんので、ご注意ください。

日付表示の修正

前回掲載したガントチャートの画面では、日付の表示が「2016/5月/17」でした。

これは「デフォルトのユーザー環境設定」の「短い日付書式」に、適当な選択肢がないことが原因でした。まずこれから修正し、「2016/05/17」のような日付の表示になるようにします。

「dotproject/modules/system/addeditpref.php」の102行をコピーしてその次の行に挿入し、フォーマットの文字列を修正します。

        $f = "%Y/%b/%d"; $dates[$f]     = $ex->format($f); 
        $f = "%Y/%m/%d"; $dates[$f]     = $ex->format($f); 	//	2016.05.17 yujakudo inserted
	echo arraySelect($dates, 'pref_name[SHDATEFORMAT]', 'class="text" size="1"', @$prefs['SHDATEFORMAT'], false); 

これでユーザ環境設定の「短い日付書式」にて「2016/05/17」のような表記が選択可能になります。

名前の表示の修正

トップページのタスクの、「次のToDoを表示:」から選択する名前が、現在「名, 姓」になっています。

そもそも私は、名前の入力にて「姓・名」の順に入力したので、データベースでは’contact_first_name’に姓、’ contact_last_name ‘に名が入っています。

本来は、英語に合わせて’contact_first_name’に名、’ contact_last_name ‘に姓を入力し、全ての名前の表示が姓・名となるようにするのが正しい吸収でしょう。

しかしdotProjectでは、名前の表示には “first_name last_name”の順の表示と、”last_name, first_name”の順の2種類があり、しかもハードコーディングされているようです。

それら全てを吸収するのは面倒なので、入力は今の、’contact_first_name’を姓に、’ contact_last_name’を名にしたままで、”last_name, first_name”の順の表示だけを切り替え可能に修正したいと思います。

ですので、vCardの出力などはうまくいかない可能性大です。

表示部分の修正

表示を行う部分では、このような名前の表示は「$row[‘contact_last_name’] . ‘, ‘ . $row[‘contact_first_name’]」のようにハードコーディングされています。

これを全て「list_contact_name($row)」のように関数で置き換え、新たに作成する関数内で吸収します。

置き換えるべき部分を検索すると以下が見つかりました。

  • dotproject/modules/admin/vw_usr_sessions.php:154行
  • dotproject/modules/companies/vw_contacts.php:41行
  • dotproject/modules/companies/vw_users.php:34行
  • dotproject/modules/tasks/todo_gantt_sub.php:34行

まだ他にもあるかもしれません。

例えば最後の「dotproject/modules/tasks/todo_gantt_sub.php」34行では、以下のように修正します。

     . list_contact_name($row)

SQL文の修正

上のように表示部で文字列結合しているだけでなく、SQLのクエリー文で「CONCAT_WS(“, “,contact_last_name,contact_first_name)」のように書いているものもあります。

これらも後で定義する「CONTACT_NAME_SQL」に置き換えます。

検索して見つかった場所は以下です。

  • dotproject/classes/permissions.class.php:340行
  • dotproject/modules/companies/addedit.php:48行
  • dotproject/modules/departments/addedit.php:66行
  • dotproject/modules/projects/addedit.php:35行
  • dotproject/modules/projects/view.php:62行
  • dotproject/modules/tasks/ae_resource.php:17行

例えば最後の「dotproject/modules/tasks/ae_resource.php」17行では、以下のように修正します。

	$q->addQuery("ut.user_id, perc_assignment, ".CONTACT_NAME_SQL." as contact_name"); 

文字列の囲みがダブルクォーテーションかシングルクォーテーションかに注意し、また後に続くスペースや’as’を削除しないように、’.’演算子を書いて注意深く置き換えていきます。

関数の作成

関数list_contact_nameは「dotproject/includes/main_functions.php」の最後に追加することにします。

またCONTACT_NAME_SQLのデフォルトの定義も、ここに定義しようと思います。

if(!defined('CONTACT_NAME_SQL')) define('CONTACT_NAME_SQL', 'CONCAT_WS(", ",contact_last_name,contact_first_name)'); 
if(!defined('CONTACT_NAME_FORMAT')) define('CONTACT_NAME_FORMAT', '%2$s, %1$s');
/**
 *	contact nameの取得.
 */
function list_contact_name($row) {
	return sprintf(CONTACT_NAME_FORMAT, $row['contact_first_name'], $row['contact_last_name']);
}
?> 

こんな感じです。

デフォルトはやっぱりオリジナルと同じにします。

config.phpに追加

そして前回同様、「dotproject/includes/config.php」の最後のほうに日本語での表示フォーマットの定義を追加します。

//	コンタクトネームのフォーマット
define('CONTACT_NAME_FORMAT', '%1$s %2$s');
//	コンタクトネームのSQL
define('CONTACT_NAME_SQL', 'CONCAT_WS(" ",contact_first_name,contact_last_name)'); 

以上です。

もし副作用がでるようでしたら、これらのdefineをコメントアウトして見て下さい。(それでもエラーなら、先の関数やSQL文を置き換える際の失敗です。)

本当はフォーマットもロケールの中に定義すべきなんでしょうね。

しかしその場合は、ちゃんと姓がlast_name、名がfirst_nameに対応するようにして、名前の表示部を全て修正して、尚且つ入力する画面も対応させるまでする必要があるでしょう。

翻訳の追加

本シリーズでは、HiromiKimuraさんのサイトのPatch/dotProjectのページよりdotProject-2.1.5対応の日本語メッセージファイルを頂きました。

そのためか、2.1.8では未翻訳の語があります。

システム管理のページから、「翻訳管理」をクリックすると翻訳が追加できます。

右上よりモジュールを選択して、翻訳を入力するようです。「送信」はページの下の方にあります。

2.1.6以降追加された単語については出てこないかもしれません。その場合は日本語メッセージファイルを修正する必要があります。

アプリの翻訳は使われる文脈に適切にする必要がありますので、私はこの時点で行うつもりはありません。

その他の設定

最後に残りの環境設定をしたいと思います。

システム管理のページから、「システム設定」をクリックします。

残業したい(させたい)場合

前回タスクの新規追加にて、8時から17時までした時間の選択しかでませんでした。

calendar_group_titleの節で、開始時間と終了時間を設定すると選択肢が増えます。

ときに、5時から21時まで。(苦笑

通貨設定

プロジェクトの入力で、予算の単位が$でしたので、これも修正しておきます。

ui_group_titleの節の通貨記号で、全角の「¥」を入れておきます。

ホストのロケールはなんとなく「ja」にしましたが、あまり意味ないかな、と思います。

右下の「保存」をクリックして終了です。

まとめ

以上でdotProjectのインストールと設定が全て終了しました。

各タスクは、作業するごとに「新規ログ」のタブから進捗を入力するようです。「説明」にコメントを入力するのが必須のようです。(「作業時間」にタイマもついてますね。)

そしてプロジェクトが終了したら、編集してステータス(状況)を「完了」にしておきます。

使っているうちに、本稿での修正ではうまくいかない場合、設定しておいた方が良い項目があるかもしれません。これらは見つかったら追記するようにしたいと思います。

コメントを残す