テンプレートの使い方 |
作成日:2004-04-30 最終更新日: |
Namazu は複数の言語で検索結果を表示できるように、 検索結果をいくつかの言語のテンプレートとして用意している。 標準は(残念なことに)英語であり、次の6種類である。
NMZ.head、NMZ.body、NMZ.foot、NMZ.result.normal、NMZ.result.short、 NMZ.tips
他の言語の版は、これらに拡張子 .?? (??は言語属性を表すアルファベット2文字)が付け加えられる
現在 Namazu では、日本語(ja)の他、 英語、フランス語、スペイン語、ドイツ語、ポーランド語の版が配布されている。 私はこれらに加えて、エスペラントを作っている。 以上の言語と対応するアルファベット2文字は次の通り。
| 言語 | アルファベット | 例 |
|---|---|---|
| 日本語 | ja | 日本語の例 |
| スペイン語 | es | スペイン語の例 |
| フランス語 | fr | フランス語の例 |
| ドイツ語 | de | ドイツ語の例 |
| ポーランド語 | pl | ポーランド語の例 |
| エスペラント | eo | エスペラントの例 |
| 英語 | (なし) | 英語の例 |
これらのテンプレートをカスタマイズしたい場合は、 新たなディレクトリを作り、 このディレクトリに新たなカスタマイズテンプレートを配置する。 これと同時に、mknmz コマンドの -T オプションで、 カスタマイズテンプレートの位置を指定する。 すると、mknmz コマンドによって生成されるテンプレートは、 検索結果が反映され、かつカスタマイズされたものを引き継ぐ。
ここで、検索結果が反映された、というのは、収集したファイル数やキーワード数など、 インデックス作成時に確定した情報の結果である。私は以前、 エスペラントのテンプレートをインデックスディレクトリの下にしか置かなかったために、 索引を再度作りなおしてもファイル数もキーワード数も全く変わらず、 その原因がわからなかったことがある。
私は以前 share/namazu/template/ の下のテンプレートを書き直す、 と記したが、 share以下を直接書き換えるのはふさわしくない、 あるいは権限がないためできない、 新たな言語のテンプレートに対応できない、などの理由でお薦めしない。
このうち、現在の版(2.0.21)では、ドイツ語のテンプレートは不完全である。 不完全という意味は、NMZ.body.de と NMZ.tips.de が用意されていない、ということである。 また、用意されている他のテンプレートも、 一部分が英語のまま残されている単語がある (例:score、keywords など)。 ドイツ語ができる方はぜひとも直していただきたい。 私は、 ボンLINUXユーザーズグループの検索ページ (http://bolug.uni-bonn.de/suchen/)を参考にして、直している。 しかし、上記個所でもテンプレートで直せない個所、 すなわち、「検索結果」、 「現在のページ」などに相当する個所は直されていない。
なお、NMZ.head.?? (?? は言語属性)を作るときには、 form タグの中で、 次のように、hidden で言語属性を設定しておくとよい。
<input type="hidden" name="lang" value="??">
また、ヘルプを呼び出す時にも、 下記のように、やはりその言語属性を指定する必要がある。
<a href="/cgi-bin/smaruyama/sercxo/ja/namazu.cgi?lang=??">[Helpo]>
以上は、テンプレートで操作可能な範囲で言語を変更する方法を述べた。 もう一つ Namazu には、 プログラム自体の出力となる言語を変更する方法がある。 表示の多言語化を参照いただきたい。
NMZ.head.* などには、埋め込み表示が可能ないくつかのキーワードがある。
<!-- HOEGHOGE -->ダミー<!-- HOGEHOGE -->
と表記しておけば、キーワードHOGEHOGE に関する mknmz を行った時の情報をダミー部分に埋め込んでくれる、
というものだ。以下、キーワード に相当するものを列挙する。
| キーワード | 意味 | 備考 |
|---|---|---|
| FILE | ファイル数 | |
| KEY | キーワードの数 | |
| DATE | 日付 | yyyy-mm-dd 形式 |
| VERSION | バージョン | 2.0.21 |
| ADDRESS | アドレス |
以上の定義は、mknmz のスクリプトの sub make_headfoot で行われている。 ここを改造すれば、自分の必要な埋め込み表示を付け加えることもできる。ためしに、 DATE では時刻がわからないので時刻を表示するためのキーワード TIME を作ってみよう。
まりんきょ学問所 > 全文検索システム Namazu > テンプレートの使い方