筑波大学技術報告
27: 34-36, 2007

Webmail IMP の日本語化
木村博美
筑波大学 研究基盤総合センター（応用加速器部門）〒305-8577 茨城県つくば市天王台 1-1-1

概要
IMP は horde.org がオープンソースで開発しているweb アプリケーションの一つです。私の職場では2001 年頃に自分自身が学外から学内のメールサーバーにアクセスする必要から IMP version 2 を導入しました。この時、IMP は別の人（trustbee.com）によって既に日本語化はされていましたが、その後はあまり更新されなくなってしまったため、PHP の勉強を兼ねて、自分で日本語化の作業を始めました。
作 業 の 成 果 は 私 の ホ ー ム ペ ー ジ(http://www.tac.tsukuba.ac.jp/~hiromi/)で公開しています。

１．IMP について
IMP は図１に示すように horde というフレームワーク上で動くアプリケーションであり、IMP 単体でも使用できますが、アドレス帳（turba）や予定表（kronolith）など他のアプリケーションと組み合わせて使用することができるようになっています。そして、個人毎の情報管理だけでなくグループウェアとしても使用できるように設計されています。ただし、別途 SQL サーバと IMAP サーバが必要です。
図２は現在私の職場で使用している最新版の IMP
で、メールフォルダ－内のメール一覧を表示した画面です。この画面左端に並んだアイコンをクリックすることで、他のアプリケーションや設定画面にワンタッチでアクセスできるようになっています。

図１. IMP の構造

２．計算機環境
サーバ OS には以前から FreeBSD を使用しており、現在は 6.1-RELEASE で運用しています。Web サーバには apache-2.2.3 と PHP5.1.6 を使用しています。
IMP をインストールするためには、PHP の拡張ライブラリである PECL／PEAR モジュールを 10 個程度インストールしておく必要があります。そしてhorde をインストールし、次に IMP をインストールするという手順になります。この手間が FreeBSD ならば ports からインストールすれば、ほとんど make 一発で済んでしまいます。
作業は直接 サーバ上の php ファイルを編集して、ブラウザから結果を見るというやりかたで、不具合の原因箇所を探る際には print 文を挿入するという原始的な方法で行っています。

図２.メール一覧表示画面

34

３．経過
2003 年 2 月に trustbee.com から
IMP 3.1 の日本語版が公開されました。その時点では職場では未だIMP 2 を使用していましたが、更新に備え、2003 年 10 月から自分で IMP 3.2.2 の日本語化作業を開始しました。といっても、ほとん
ど IMP 3.1 のパッチを適用し、翻訳を更新した程度です。そして職場のサーバを IMP3 に更新し、その後はオリジナルの更新に合わ
せ て IMP3 の 日 本 語 化 作 業 を2005 年 11 月まで行いました。
一方、2004 年には IMP4 のテスト版が公開されたため、12 月から IMP4 用の翻訳を開始しました。そして、2005 年 2月に IMP4.0 公開されたので、日本語化の作業を開始しましたが、作業用サーバの障害等により中断し、作業を再開したのは 2006 年 6 月からでした。
IMP4 では文字エンコーディングに UTF-8 を優先的に使用するようになったため、パッチを一から作り直しました。2006 年 10 月からは職場でも IMP4 を運用しています。
また、メール以外にもアドレス帳、予定表、メモなどのアプリケーションとの連携も強化されたので、それらの日本語化作業もするようになりました。図
３はアプリケーションの一つ、予定表の画面です。

４．作業内容4.1 メッセージの翻訳
日本語化の第一歩はメッセージの翻訳です。翻訳
すべき文字列はバージョンが上がる度に増えて現在
では horde と IMP 合計で約 3000 行ありますが、IMP3からはメッセージの処理に gettext1が使用されるようになったので、更新の手間はかなり少なくなりました。
メッセージは図４のように１つのファイルにまとまっているので、msgid の文字列を翻訳し、msgstrに記入していきます。
翻訳がひと通り終わったら、単純な翻訳ではメッセージの意図が伝わらない場合があるので、実際に画面に表示させて確認します。また、文字の長さが変わることでレイアウトがずれてしまうこともあるので、その修正も行います。例えば、Import/Exportは普通「インポート/エクスポート」と翻訳しますが、文字幅が倍近くになってしまいますので、代替案として「イン／アウト」を使用しています。

#: framework/Form/Form.php:2387#, php-format
msgid " (%s days ago)"
msgstr " (%s 日前)"#: framework/Horde/Horde.php:1362#, php-format
msgid " (Accesskey %s)"
msgstr "アクセスキイ %s"#: framework/Form/Form.php:2395#, php-format
msgid " (in %s days)"msgstr "（%s 日の内に）"
図４．メッセージファイルの一部ましたが、多くの環境で日本語を表示することができました。
この時、日本語の文字エンコーディングにはEUC-JP を使用するのが最善であることは日本人には知られていたのですが、horde.org に最初に日本語訳を登録した人が日本人でなかったためか、SHIFT-JIS で登録されていました。そこでパッチではEUC-JP を使用するようにしていました。
IMP 4.1 では Unicode の UTF-8 エンコーディングを使用するようになり、日本語以外のメールも正しく表示されるようになりました。しかし残念ながら古いブラウザでは逆に文字化けするようになってしまいました。幸い firefox が色々な OS で使用できるので、古いブラウザを使っている人には、firefox を勧めています。

4.3 日本語メールへの対応

4.2 ブラウザへの対応
IMP 3 当時のブラウザは Unicode 対応が遅れていた
ために、言語毎に文字コードを固定して表示する方法を採用していました。言語に日本語を選択すると、英語以外の海外からのメールは文字化けしてしまい

1

図３．予定表画面

http://ja.wikipedia.org/wiki/Gettext

35

日本語メール送信時には JIS（iso-2022-jp）に変換する処理は最初から入っていましたが、ヘッダ（From,To, Subject）の日本語を mime エンコードする処理が入っていませんでした。その点は horde.org に知らせたのですが未だに直っていないので、パッチで解決しています。
また、IMP 以外のアプリケーションから通知のメールを送る機能があるのですが、そのメールはUTF-8 で送られてしまうので、やはりパッチで解決しました。
添付ファイル名が日本語の場合、ファイルを保存した時、ブラウザによってはファイル名が文字化けします。MSIE はフィル名を SHIFT-JIS で指定しなければなりません。Safari はどんなエンコーディングでも文字化けしてしまいますが、奥村先生のホームページ2に拠れば、PATH_INFO で渡せば良いということなので、試してみたのですが未だ成功していません。
また、添付ファイル名の中に空白、タブ、丸数字などがあるとブラウザによって保存の際の挙動が異なります。Firefox では保存したつもりでも保存されないことがありますので、それらの文字を排除するようにパッチで対応しました。

4.4 OS への対応
IMP4 になってから、日本語が所々で文字化けするようになりましたが、ある時 FreeBSD 特有だと気付きました。
$jstr = "¥xe7¥xa0¥x94";/*UTF-8 の研*/setlocale(LC_ALL,"C");
print preg_match('/¥s/',$jstr) . ",";
setlocale(LC_ALL,"en_US.UTF-8");
print preg_match('/¥s/',$jstr) . "¥n";

この文字列中の空白を検出する PHP コードを実行
すると、Linux では "0,0" となりますが、FreeBSD では "0,1" となってしまいます。原因は、FreeBSD では UTF-8 locale の ctype データに Unicode のプロパティデータを使用しているからです。そのファイルの中で、SPACEと定義されているので、２つ目の preg_match( ) が日本語文字中の 0xa0 に一致してしまうのです。もちろん preg_match で '/¥s/u' と UTF-8 であることを指定すればそうはなりませんが、実際のコードでは必ずしも UTF-8 の文字列が渡されるとは限らないので、そうすることはできません。そこで、locale を設定する時にsetlocate(LC_CTYPE,”C”);というコードを挿入することで回避しています。

５．今後管理者の設定画面（図５）やヘルプ画面の翻訳をしていませんが、日本のユーザを増やすためには必要だろうと思います。また、未解決の問題がいくつかあるので、時間をみつけて解決したいと思います。
更に、パッチを整理し、horde.org に取り入れてもらえるように努力したいと思っています。

図５．管理者用設定画面

2

http://oku.edu.mie-u.ac.jp/~okumura/php/filename.php

360x0085 0x00a0