tcsh-6.08 追加日本語カタログ+漢字表示パッチ旧版互換 特別付録

	tcsh-6.08における日本語NLSカタログの作り方

1.始めに
  日本語表示や,NLSカタログに対応したtcshが登場し,日本語カタログも
使えるようになりましたが,普通のカタログではどうしても面白みに欠け
また, 私だけではネタ的にも限界があります.
  そこで, 他の方にもオリジナルでとても怪しいカタログを作ってもらいたいと
考えました.
  このドキュメントでは,私の分かっている範囲で, NLSカタログの作り方を
書いていきたいと思います.

2. 必要な知識について
  このカタログを作成する際にはさすがに以下の知識が必要になります.
  - 英語
    tcshのエラーメッセージの意味が分かれば何とかなります.
  - unixのファイル操作コマンドの基本的な使用方法
また,本当にすべてのメッセージを日本語化するなら"tcshの内部"も多少は
知る必要が出てくるかもしれません.(内部エラーメッセージが結構多い)
# もちろん私は全部理解できていません.

3.準備
3.1. ベースの準備
  まず, ベースとなるカタログを用意します. いくらなんでも始めから作るのは
不可能ですから, 英語のカタログを自分のところにコピーし,これを少しづつ書き
換えるという方法で作成していきます.
英語のカタログはnls/Cと言うところにあります.
  ここでは,独自のカタログのために,nls/japan.orgと言うディレクトリを作成し,
この下に英語のカタログをコピーするものとします.
操作例としては以下のとおりになります.
(最初にtcshのソースディレクトリにいるものとします)
% cd nls
% mkdir japan.org
% cp C/* japan.org/
これで, コピーが終わっているものと思います.

3.2. ファイルの構成
  コピーしたjapan.orgの下のディレクトリを見ると, 以下の構成になっています.
% ls
set1   set12  set15  set18  set20  set23  set26  set3   set4   set7
set10  set13  set16  set19  set21  set24  set27  set30  set5   set8
set11  set14  set17  set2   set22  set25  set29  set31  set6   set9

ファイルがいくつもあるのは, カテゴリーごとにファイルを分けているためです.
# 完全では無いみたいです.
各ファイルの2行目に大体のカテゴリーが記述されています.
私が理解したかぎりでは,以下の分類になっているようです.
set1	エラーメッセージ
set2	シグナル
set3	エディタのヘルプ?
	内部コマンドのbindkey -lで出力されるメッセージみたいです.
set4	termcapの内容
set8-31	各ファイル内のメッセージ
	内部エラーが中心ですが,一般的に出力されると思われる
	メッセージも一部含まれています
# set28はありません.

3.3.カタログファイルの内部構造
カタログファイルはすべて以下のような形式になっています.
---
$ $Id: set1,v 1.2 1995/03/19 18:07:15 christos Exp $
$ Error messages
$set 1
1 Syntax Error
2 %s is not allowed
(中略)
---
1行目と２行目はコメントです.2行目がファイルの説明になっているようです.
3行目の$set ??は,ファイルのセット番号で,tcshのプログラムの内部で
使っています. そのため,ここを修正はしてはいけません.
4行目から各項目で, 以下の形式になっています.

項目番号 メッセージ

  項目番号はプログラム内部で使っている整理番号で, これは修正してはいけません.
また, 番号の間は抜けても言いようです. 日本語化していない所は削除しても
いいでしょう. ファイルごと(カテゴリーごと)消しても大丈夫みたいです.
  項目番号2で%sが入っています. 他にも%dなどがあるのですが,これはメッセージが
printfの様に使えるためで,ここに,色々と単語が入って,メッセージが完成します.
  %s等の位置をずらすことは出来ます. しかし,%s等が複数ある場合には,順番を
変えることが出来ません. そのため, この事を考慮してメッセージを
書き換える必要があります.
複数の%sがある例(set1より)
131 \nMissing separator '%c' after %s "%s"

また, 以下のような場合もあります.
これはset11の中の一文です.

5 You have %smail.\n

  この行末にエスケープシーケンスの\nが入っています. これも先程と同じ理由で,
利用可能です. このエスケープシーケンスについては,少なくても'\n'は
合わせる必要があります. '\t'等については実際に試しながら決めれば
いいでしょう.

3.4. Makefileの修正
  カタログを書き換えたらコンパイル(と言うか形式変換)を行って,システムに
登録しないとなりません.
makeで,コンパイルされるようにするためには,nls/Makefileを以下のとおりに
修正します.
SUBDIRS=	C german french ja.roomi
を
SUBDIRS=	C german french ja.roomi japan.org
                                        ^^^^^^^^^^追加
これで,今回作成するjapan.orgもコンパイル対象になります.
作成方法については,README.kanji.patch.eucを参照してください.
この場合の出力ファイルは,"tcsh.japan.org.cat"です.

4. 書換え
4.1. 簡単な書換え
まず, 簡単に意味の分かりそうなset1から見ていくことにします.
set1の各項目を, 上から見ていきます.
このなかで, 最初に分かりやすいのが
1 Syntax Error
3 Word too long
14 Command not found
の,3つの行だと思います. 項目1は文法エラー, 項目3はワードが長すぎる,
そして項目14がコマンドが見つからなかったというものです.
ですから,この3つはこんな感じで書き換えればいいでしょう.
1 文法エラーです
3 ワードが長すぎます
14 コマンドが見つかりません
項目1と,項目3はすぐに出ない(と言うか出る条件が分からない)のですが,
項目14はコマンドが見つからないときに出るのですから,すぐに出せます.
そこで,早速コンパイルして,試してみます.
うまく行けば,こんな感じになるでしょう.

% aksdfasldfd
aksdfasldfd: コマンドが見つかりません.
%

こうなれば,成功です. set1については,後は順々に見て修正すればいいです.
途中,こんなメッセージもあります.
77 Unknown user: %s
これは,先ほど記述した%sのあるメッセージです.ここでは,%sが最後尾にありますが,
場所はずらせますので,以下のような形にできます.
77 %sというユーザーは知りません
これは, ~userの展開の失敗ですから, 結果はこんな感じになります.
% ls ~aaaa
aaaaというユーザーは知りません.
%
と言う形になります.

4.2. テスト運用しながら書き換える
set1を修正して,テスト運用にはいり,しばらく運用していると,
まだまだ英語のメッセージが多いと思います.
たとえばこんなメッセージです.
tcsh: using dumb terminal settings.
これは,環境変数TERMを間違えたときに出力されます.
これはset1に無いので探さないとなりません.
こういうときにはgrepを使って,カタログファイルを検索します.
(すでに,カタログファイルのディレクトリにいるものとします.)
% grep "using dumb terminal" *
set7:22 tcsh: using dumb terminal settings.\n
set7にありました. 早速,set7を書き換えます. この時, この行の行末には'\n'
が入っていますので,これは残さないといけません. ここでは,こんな感じに
します.
22 tcsh: dumb端末の設定を使います.\n
これで結果はこうなります.
% setenv TERM v
tcsh: dumb端末の設定を使います.
となります.

4.3. 手っとり早く日本語化を行う
  ここまで,基本的な方法を説明してきましたが,どうしても面倒でやってられない
という方にはもう少し簡単な方法があります.
それは・・・・
ベースとなるカタログとして, jaを使用する.
です.
これなら,1/5程度は日本語化しているので,ひとまず,日本語化しているところだけを
自分の好みに合うように修正すればよいです.
# 『なぜそれを早く言わないんだ』と言う方もおられるでしょうが,
# 一応基本からですから・・・・・

4.4. 手っとり早く日本語化を行う(その2)
テキストエディットも面倒という方には, テキスト方言化フィルタを
使用する方法があります.
osaka(newosaka-1.0)という標準語を大阪弁に変換する
フィルタソフトがあるのですが,これを以下のように使用すると
簡単に大阪弁カタログが完成します.

% osaka < tcsh.ja.m > tcsh.ja.osaka.m
% gencat tcsh.ja.osaka.cat tcsh.ja.osaka.m

(HomePage:http://www.power.co.jp/tm/tanaka/unix.html)
(情報提供:坂本浩則さん)
osakaというツールは, 辞書形式を採用しているとの事で,
辞書を書き換える事により, 比較的簡単にカタログソフトの作成ができるのでは
と思います.
# すいません. 私は試していません.

5. 最後に...
ここまで, 簡単に説明してきましたが, もし分かりにくいところがありましたら,
mailか,fj.sources.dに投稿してください.
OS関係のNGは見ていませんので, そちらに書かれても,返答できません.
あと, この文章の再配付は,しばらくの間tcshのパッチセットと一緒にお願いします.
ただし, html等にして, 多くの人に見てもらえるようにするというのであれば
この限りではありません.

この文章がtcshの日本語化の推進に役立ってくれることを期待しています.

---
榊原 善之
E-mail:znc@mail.wbs.ne.jp
       BQA01304@nifty.ne.jp
