tcsh日本語カタログを自作しよう
Last update 2003. 7.15.

tcshに、ver6.07から日本語パッチが配布され始めました。 ということは、これを利用して自分の好きなように日本語カタログを編集出来てしまうと言うことです。 つまり、自分のお気に入りの○○○のセリフをシェルメッセージとして喋らせることが出来るというわけでして、つまり、つまり、、、。

と、壊れている場合じゃありません。 カタログを作ってから壊れることにしましょう。

但し、本ページに書いてあることを実行した結果起こったいかなる事態に対しても、当方では責任を負いかねますので予めご了承下さい (と、一応免責事項らしきものを書いておきます。 滅多なことでは事故なんて起こるとは思いませんが、、、)。

カタログを自作するにあたって、まずはオリジナルのカタログを入手しましょう。 tcshのオリジナルアーカイブは下記の場所にあります。 ご使用の環境に合わせてファイルをダウンロードして下さい。

ftp://ftp.astron.com/pub/tcsh
ftp://ftp.gw.com/pub/unix/tcsh (ミラーサイト)
そしてアーカイブファイルを適当な処に解凍します。 すると、解凍先のディレクトリの下にnls/ja/ があるはずです。

ここには、メッセージセットがファイルset1,2,5,6,8,10,11,12,13,15,16,17,18,21,24,29,30に分けて置かれています。 これらを好きに書き換えちゃいます。 精一杯萌えましょう、壊れましょう。

「俺は仏語で壊れてぇ!」という方もいらっしゃるかも知れません。 nlsの下には色々あるようですし、お好きな言語で試してみましょう。 ただし、端末の方でその言語に対応している必要があります。

また、当然ですが、複数ユーザーのいる環境でお試しになりたい方は、ユーザー全員の了承を得てから試すようにしましょう。

書き換え終わったら、「やったぁ、これで萌え萌えなtcshライフを送れるぞ!」ではなく、これらのファイルからカタログを編集する必要があるのです。 もう少しご辛抱。

まずは作成したメッセージファイル達を一つにまとめてテンポラリファイルにします。

% cat set[0-9] set[0-9][0-9] > tmp
そしてgencatコマンドにてバイナリなカタログを作成します。
% gencat tcsh.ja.myself.cat tmp
         ~~~~~~~~~~~~~~~~~~
~~~部は、お好きな名前で結構ですが、tcsh.(ほにゃらら).catとしておくのが慣例のようです。 テンポラリファイルを消しておくことを忘れずに。
% rm tmp

で、作成したカタログを適切なディレクトリに置くわけですが、まずは今使っているカタログがどこにあるかを確認してみましょう。 これは、環境によって違うようです。 参考までに私の環境、Debian GNU/Linux 3.0(woody)では、

/usr/share/locale/ja/LC_MESSAGES/
にあることになってます。 以下は、ここに置くことを前提として話を進めます。他にも
/usr/lib/locale/
/usr/local/share/locale/
/etc/locale/
などが候補としてありそうです。 探してみましょう。
追記: Debian GNU/Linux 3.0(woody)では、localeは/usr/lib/locale/に移されました。 が、tcshは依然/usr/share/localeを見に行くようです。 この辺りどうなっているのか、私にはよく判りません。 また、localepurgeなどがインストールされている場合、/usr/share/locale/以下にある日本語ロケールは自動削除されてしまいますのでご注意。

デフォルトなカタログの名前はその名も"tcsh"です。これは一応とっておきましょう。

% cd /usr/share/locale/ja/LC_MESSAGES/
% mv tcsh tcsh.org
% cd -
自作したカタログをここに置きます。
% mv tcsh.ja.myself.cat /usr/share/locale/ja/LC_MESSAGES/
そしてシンボリックリンクを貼るわけです。
% cd -
% ln -s ./tcsh.ja.myself.cat tcsh
最後に.cshrc(または.tcshrc)をsource し直せば完了です。
% source ~/.cshrc
でたらめな単語をコマンドプロンプトから打ち込み、エラーメッセージを表示させてみましょう。 うまくいきましたか?

「うまくいかねーぞ!!」なときは、、、

「俺はスーパーユーザになれねーんだ!!」「俺のシェルだけメッセージを換えることはできねーのか?」な方は、、、

実はローカルディレクトリにカタログを置く方法もあります。以下は、Linux(Debian, Vine)にて確認しました。

ホームディレクトリに tcsh なるディレクトリを作り、そこにカタログを移動したとします。こののち.cshrc の中に

setenv NLSPATH $HOME/tcsh/%N
の一行を加えます。 要はNLSのパスをローカルな場所に通すというだけです。 環境変数 NLSPATH は LANG よりも先に設定して下さい。 でないと先にデフォルトlocaleをディテクトされてしまいます。

更に

% cd ~/tcsh
% ln -s tcsh.ja.myself.cat tcsh
% source ~/.cshrc
とすればOKです。

参考までに、私の作ったカタログを幾つか置いておきます。

あ、ついでに簡単なmakefileも入れておきました。詳しくは同梱のREADMEをお読み下さい。

それから、末尾で失礼ながら、tcsh ver6.07まで日本語化パッチの作成に御尽力下さっていた榊原さんのサイトにリンクを張らせて頂きます。


お気軽にメール下さい。バグレポ等大歓迎です。
zhidao@land.linkclub.or.jp
Z-Lab
SIDE-Z