MHonArcの最近のバージョンでは特に大きな問題もなく日本語のメッセージを扱うことができる。しかし、デフォルトでは生成されるページの各種リンクなどが英語のままになってしまう。別にさして難しい単語を使っている訳でもないから、英語のままでもそれほど大きな問題はない。でも、せっかくそのへんもカスタマイズできるように作られているソフトなのだし、そもそも日本人が読むページなのだから、どうせなら日本語にしたい、と思って行った作業をまとめておこう。
上述のとおり、配布されているパッケージに特に手を加えなくても、日本語のメッセージをアーカイブすることはできる。このことに関しては、「MHonArcの日本語化」に分かりやすく解説されている。
生成されるページの日本語化に当たっての問題点
MHonArcでは、適切にリソースを設定することによって生成されるページの表示内容を変更することができる。この機能を使って、各種リンクのテキストなども変更できる訳だが、ここに単純に日本語を書けばいいかというとそうでもない。
- Perlで扱うためには、 日本語は euc-jpにするべきである。
- しかし、 iso2022jp.pl を使って生成されたページは iso-2022-jpであるから、リソースの設定を euc-jpで記述すると、 euc-jpと iso-2022-jpが混在することになる。
解決方法
ということで、生成されるページが単純に euc-jpになるようにすればいい訳である。まずは、 iso2022jp.pl に手を入れることを考えたが、よくよく考えてみればこれを改造するのではなく、 euc-jpで出力してくれるフィルタを新たに書けば、このフィルタを使うようにする設定は非常に簡単にできることに気づいた。
さらにドキュメントを読んでみると、 euc-jpで出力することそのものは、 TextEncode リソースを設定することで簡単にできることが分かった。で、問題は iso-2022-jpなテキストに対して iso2022jp.pl がやっている作業、すなわち HTML的に正しい形に変換する部分 (だけじゃないけど) を euc-jpなテキストに対してやってくれるものを作ればいい、ということのようだ。
それで iso2022jp.pl を参考にして適当に作ったのが、 eucjp.plである。
生成されるページを euc-jpにする
- eucjp.plを、適切なディレクトリにコピーする。 (FreeBSDの port/packageを使ったインストールの場合なら、 /usr/local/share/MHonArc にコピーする。)
- 以下の記述をリソースファイルに追加する:
<!-- charset handling --> <CharsetConverters> euc-jp; euc_jp::str2html; eucjp.pl </CharsetConverters> <TextClipFunc> euc_jp::clip; eucjp.pl </TextClipFunc> <TextEncode> euc-jp; MHonArc::Encode::from_to; MHonArc/Encode.pm </TextEncode> <DefCharset> iso-2022-jp </DefCharset>
これで MHonArcが生成するページ中の日本語は、 euc-jpになる。 (はずである。)
ページの完全日本語化
ここまでやれば、後はリソースファイルの中に euc-jpで好きなだけ(?)日本語を記述できる。私が実際に使っているリソースファイルも参考になるかもしれない。また、この設定を使って生成したアーカイブもある。