ja2hin


ARCHIVE


SAMPLE

ファイル翻訳の例としては、 Yen-e JAPAN with SETI@home にて本スクリプトが使用されています。



NAME

ja2hin - 日本語とひんたぼ語とを双方向翻訳


SYNOPSIS

http://you.example.org/cgi-bin/ja2hin.cgi?[;d=dst_lang][;s=string]
http://you.example.org/cgi-bin/ja2hin.cgi?key

ja2hin.cgi [ -HJv ] [ -a | -h [ attr ] ] [ -i code ] [ -o code ] [ -f file | string ... ]


DESCRIPTION

文字列やファイルを、日本語からひんたぼ語、 もしくはひんたぼ語から日本語に翻訳します。 HTML ドキュメントは、 タグや属性値を壊さずに変換できます。

本スクリプトは CGI プログラムとしても、 コマンドラインプログラムとしても利用する事ができます。

CONFIG

本スクリプトの先頭に書かれている perl(1) のパスを確認し、 必要ならば変更して下さい。 また、スクリプト内に以下の設定項目があるので、適宜変更して下さい。

%SrcFile
CGI プログラムとしてファイル翻訳させる際の、 翻訳元ファイルの情報と、それを呼び出す為のキーの対応表です。 キーに利用できる文字は英数字とアンダーライン (_) のみです。
$JconvModule
特定の文字コード変換モジュール (or ライブラリ) を強制的に使用したい場合、 EncodeJcodejcode.pl のいずれかの値を指定して下さい。 デフォルトでは any (自動選択) です。
@ReplaceAttr
通常 HTML のタグ自身は変換対象になりませんが、 この配列に定義された属性の値は変換対象となります。 デフォルトでは alt 属性と title 属性が指定されています。
$MaxInputSize
CGI プログラムとして動作させる際の、 入力方法毎に受け取れるデータの最大サイズ (単位: byte) です。 デフォルト値は 65536 です。
$Charset
$ContentType
$Lang
出力の文字コードと、 CGI プログラムとして翻訳フォームを表示させる際の言語タグ及び Content-Type ヘッダの値です。 変更する際は本スクリプト自体もその文字コードで保存し直して下さい。 デフォルト値は $CharsetEUC-JP$ContentTypetext/html; charset=EUC-JP$Langja です。
$PageHeader
$FormBody
$ResultBody
$ErrorBody
$PageFooter
CGI プログラムとして翻訳フォームを表示させる際に出力される、 各ページのテンプレートです。 翻訳結果と置換する為に、 $ResultBody には以下の文字列を埋め込む事ができます。
__SRC__
翻訳前の文字列に置換されます。
__DST__
翻訳後の文字列に置換されます。
__JAPANESE__
日本語の文字列に置換されます。
__HINTABO__
ひんたぼ語の文字列に置換されます。
$Break
CGI プログラムとして翻訳フォームを表示させる際に、 入力された文字列中の改行文字をこの文字列に置き換えます。 翻訳結果を HTML ドキュメント中に地の文として挿入する際には <br> 、textarea 要素の内容として挿入する際には \n 等と使い分けて下さい。 デフォルト値は <br /> です。

SETUP

本スクリプトをお好みのディレクトリに置き、実行属性を付けて下さい。

public_html/
    +- cgi-bin/
        +- ja2hin.cgi  755 (-rwxr-xr-x)

アーカイヴに含まれる上記以外のファイルは実行の際に不要です。

なお、文字コード変換処理の為、以下のモジュールのいずれかが別途必要です。

Encode - character encodings
perl(1) のヴァージョンが 5.8.0 以降ならば、標準モジュールである Encode を用います。
Jcode - Japanese Charset Handler
Jcode.pm がインストールされていればそれを用います。
jcode.pl: Perl library for Japanese character code conversion
jcode.pl が @INC のパス内に見つかればそれを用います。 上記モジュールのインストール状況が分からなければ、 保険として本スクリプトと同じディレクトリに jcode.pl を用意して下さい。 なお jcode.pl 使用時は、UTF-8 や UCS-2 には非対応となります。

USAGE

設置した URL へアクセスすると、 翻訳フォームが表示されます。

http://you.example.org/cgi-bin/ja2hin.cgi

クエリに %SrcFile に設定したキーを与えてアクセスすると、 対応するファイルをひんたぼ語に翻訳して表示します。

http://you.example.org/cgi-bin/ja2hin.cgi?key

コマンドラインプログラムとして動作させる場合は、 翻訳したい文字列かファイルを引数に与えて実行して下さい。

> perl ja2hin.cgi -f file
> perl ja2hin.cgi string


OPTIONS

コマンドラインプログラムとして動作させる場合は、 以下のオプションを利用できます。

-a
渡された全文を翻訳対象とします。 -h オプションとは排他で、より後に指定された方が有効になります。
-f file
ファイルを読み込み、翻訳結果を表示します。
-H
ひんたぼ語に翻訳します。この動作がデフォルトです。 -J オプションとは排他で、より後に指定された方が有効になります。
-h [ attr ]
渡された文字列やファイルを HTML ドキュメントと見做し、 要素の内容のみを翻訳対象とします。この動作がデフォルトです。 -a オプションとは排他で、より後に指定された方が有効になります。
attr に属性名を指定すると、その属性値も翻訳対象となります。 複数の属性名を指定するには、-h オプションを複数指定するか、 カンマ区切りで指定して下さい。
> perl ja2hin.cgi -f file -h alt -h title
> perl ja2hin.cgi -f file -h alt,title
> perl ja2hin.cgi -f file -h ""
attr を省略した場合は、 @ReplaceAttr に定義された属性名を指定したものと見做されます。 @ReplaceAttr に定義されている属性値も対象にしたくない場合は空文字列 ("") を指定して下さい。
-i code
入力の文字コードを code と見做します。
-J
日本語に翻訳します。 -H オプションとは排他で、より後に指定された方が有効になります。
コマンド名が hin2ja を含む場合 (シェルで alias hin2ja ja2hin.cgi と設定していたり、 ファイル名 hin2ja で本スクリプトのリンクを作り、 そちらで呼び出した場合等) はこの動作がデフォルトになります。
-o code
翻訳結果を文字コード code で出力します。
-v
ヴァージョンと簡単なヘルプを表示して終了します。

NOTES

日本語からひんたぼ語への変換は原則的に以下の規則に従います。

  1. 濁点・半濁点は分離して一文字として扱う。

    か゛

  2. という風に、五十音順で 1 つ後ろの文字に置き換える。 次の各文字 んっゃゅょ?゛゜ー は以下の変換テーブルに従って置き換える。

    日本語 あ-ろわをんっゃゅょ?゛゜ー
    ひんたぼ語 い-わをんっゃゅょ?゛゜×あ
  3. 数字も 1 ずつずらし、90 にする。

    日本語 0-890-89
    ひんたぼ語 1-901-90

ゲーム中では上記文字しか表示されないようなので、 他の文字の変換規則は不明ですが、本スクリプトでは英字とカタカナ、 及び小さい仮名文字 ぁ-ぉヵヶゎ も対象としてみました。

日本語 A-YZa-yzA-YZa-yz
ひんたぼ語 B-ZAb-zaB-ZAb-za
日本語 あ-ろわをんっゃゅょ ぁ-ぇぉ ゎ?゛゜
ひんたぼ語 い-わをんっゃゅょ? ぃ-ぉか を゛゜×
日本語 ア-ロワヲンッャュョ ァ-ェォ ヵヶヮ
ひんたぼ語 イ-ワヲンッャュョ? ィ-ォヵ キコヲ
日本語 ア-ロワヲンッャュョ ァ-ェォ ?゙゚
ひんたぼ語 イ-ワヲンッャュョ? ィ-ォカ ゙゚×

長音はその前に来る文字によって、 のいずれかに変換されます。


BUGS

翻訳処理部のテストが不充分です。翻訳結果がおかしい場合はご連絡下さい。

複雑でバックトラックの多い正規表現を使用している為、 長い文字列を処理する際に実行時例外が発生する可能性があります。 特に Perl 5.005_xx では起こり易いので、 可能ならばより新しいヴァージョンの perl(1) で実行して下さい。

use strict 、-T スイッチ (汚染チェック) 、及び -w (警告) スイッチを付けた状態でエラーが出ないように、 また機能毎にモジュールに分割された状態で開発していますが、 設置の容易さを優先する為、一つのファイルに詰め込み直しています。 Subroutine %s redefined at ... を大量に吐くものの、 Apache::PerlRun でも一応動作を確認しています。


SEE ALSO

Encode 利用時の文字コード判定処理は、 まかまか般若波羅蜜氏作の JEncode をパクりました。;)


AUTHOR

Copyright © 2002-2004 Yaminusi. <yn@byor.org> All Rights Reserved.

一次配布元: BYOR

本スクリプトは修正 BSD ライセンスにて公開されています。


HISTORY

2004-09-07: v1.0.0
変換規則の細部を見直し。
テンプレートが文字化けしないよう、 ヒアドキュメントをシングルクォート文字列扱いに。
コマンドラインオプションの拡充。
2003-10-06: v0.1.1
ドキュメントやテンプレートで些細な変更。
2003-10-02: v0.1.0
変換規則の細部を見直し。
ひんたぼ語 to 日本語翻訳に対応。
クエリ無しで呼び出すと翻訳フォームモードに。
複数の文字コード変換モジュールに対応。
スクリプト内部の設定項目を一新。
2002-05-14: v0.0.2
ページ出力時、["&<>] をエスケープしていない箇所があったので修正。
2002-05-09: v0.0.1
初版公開。