Windows の世界の Babylon Translator の Linux / UNIX での機能代替品(類似品)。 あるいは、Emacs上の edict.el / ejdic.el と似た機能を X Windows 上で使えるようにした翻訳ソフト(辞書フロントエンド)。
Win32 向けの商用ソフトヱアに Babylon Translator(http://www.babylon.com/)という翻訳ソフトヱアがある。 単語上でマウスクリックすると訳語がポップアップするもので、「あれ、ど忘れした、どんな意味だっけ」て感じで、ちょっと単語を調べたいときに大変重宝し ている。また、Emacs 上にも、mouse clickで訳語が別 buffer に出る edict.el や ejdic.elがある。 しかしながら、翻訳ソフトを実際に使いたいのは、第一に browser 上でである。(W3を使えば良いのではあるが)
という訳で、Babylonに Linux 版がないのは常々残念に思っていた。ずぅーと、「Linux 版作ってくれないかなぁ」的な他力本願でいたのだが、最近の版では、有料ソフトヱアになってしまった。
という訳で、もういらんわい、自分で作っちゃるという気になった。
なお、Windows版を作成しました。こちらにどうぞ。
機能 | Babylon | XBabylon |
訳語の表示 | window がポップアップする | window がポップアップする |
辞書 | Babylon 付属の辞書 | Free な辞書 EJDIC |
Web Search | online 辞典を検索可能 | 使わない機能なので省く |
単語の切り出し | 独自 OCR (one click のみ) | cut buffer (撰択 + click) |
各国語対応 | 色々使えるようだ | 英和のみに限定。 但し辞書を用意すれば、任意の言語の変換は可能 |
配布形態 | proprietary, binary only | open source (xbabylon 自身は GPLに従います。ejdic はPDSなのは確かそうですが、詳細不明) |
英和辞書ツール XBabylon のリリース(0.9.4)です。
(1) これは何ですか?
X で動作する翻訳(単語辞書)ソフトヱアです。
Windows に Babylon translator(TM)というのがありまして、なかなか便利な
ので愛用しています。しかし、Linux 版がない点を常々残念に思っておりまし
た。アンケートに書き込んだりして、出ることを期待して待っていたのですが、
今に到るまで開発計画はないようです。さらに、最近は基本的に有料ソフトに
なってしまいました(無料の trial version もあるのですが、うるさい公告が
付くようになっています)。こういった商用化の動きから推測するに、今後の
Linux 版に期待することはできないでしょう。
というわけで、X 上で似た動作をするユーティリティアプリケーションを書
いてみました。通常のアプリケーションプロセスですが、ヰンドウマネジャの
ショートカットを活用して、マウスプッシュで呼び出すことができます。辞書
は、FreeUNIX で良く使われている ejdic を使っています。基本的に Xlib し
か使っていないので、軽さには満足いただけると思います。私の note PC
(Pentium MMX 166MHz)でもストレスなく動きます。
概ね実用的なレベルで動作しますので、良かったら使ってみて意見をくださ
い。
(2) インストール
(2.1) Build
辞書を既に持っている人は xbabylon-x.xx.tgzだけを、辞書が未インストー
ルな方は、追加で ejdict.tar.gz をダウンロードして、同ディレクトリ(/tmp
など)に展開して下さい。xbabylon のディレクトリに移動し、su になって、
make install。終り。
もう少し詳しく説明します。
default の設定では、以下のファイルが install されます。
/usr/local/bin/xbabylon
/usr/local/lib/ejdic.XXX
/usr/local/man/man1/xbabylon.1.gz
XXX はロケールに合わせて変わります。LC_ALL 環境変数が ja_JP.ujis なら
ejdic.ujis, ja_JP.UTF-8 なら ejdic.UTF-8 になります。辞書は実行時のロ
ケールに合わせて探索されます。したがって、インストール時に、それに合わ
せて下さい。また、複数のロケールを切り代えて利用している場合は、辞書を
複数置いておくことで対応できます。通常、Redhat 系列は ujis、Fedora
Core系列は、UTF-8 です。
辞書ファイル(ejdic.ujis)は、/usr/loca/lib に置きます。辞書ファイルの
copyright は GPL ではありませんので、基本的にはアーカイブに含まれませ
ん。public domain にあるものを as is で提供しています。また、gene95 辞
書も利用することができます。(ググッて下さい)。
Ejdict は、付属の別ツールと共にかなりポピュラーですので、既に install
されていれば、それを使うこともできます。元々の辞書は Shift_JIS でエン
コードされていますが、ロケールに合わせてエンコードを変更します。既に使
用ロケールに合致した Ejdic 辞書がどこかにある場合、Makefile の DICT 変
数をそのパスに設定します。(または xbabylon 実行時 -d file_path でも指
定できます)
make install すると binary は、/usr/local/bin に置かれます。変更した
ければ、Makefile の INSTALLDIR 変数の設定を変えて下さい。(PATH が通っ
ていればどこでも良いですし、後述の Window Manager への設定をフルパスで
記述すればそれも必要ありません)
また、default の font は 12 dots にしてありますが、これがない場合や小
さすぎる場合も多いと思われます。これを変える場合は、Makefile の
OPTIONS の中にある -DFONT12 を -DFONT10 (10dots), -DFONT14 (14dots) に
変更して下さい。
(2.2) 設定
次にキーバインディングを設定します。基本的な操作としては、double
click などで cut buffer に取ってから、shift-右マウスボタンクリックで訳
が表示されます。これを実現するために WindowManager の keyboard short
cut 機能を使います。勿論、Key はshift-右マウスボタン以外でもOKです。お
好きなのを設定することができます。
(2.2.1) Sawfish
Sawfish であれば、setup menu から "short cut" に
run-shell-command "xbabylon"
または、
run-shell-command "/usr/local/bin/xbabylon"
を設定します。例えば Shift-Mouse 3 などにします。
もしくは、.sawfishrc に以下を記入します。
(custom-set-keymap
(quote window-keymap)
(quote (keymap ((run-shell-command "xbabylon") . "S-Button3-Click"))))
(2.2.2) Fvwm, Fvwm2
fvwm なら .fvwmrc に以下を加えます。
Mouse 3 RWTFIS S Exec "xbabylon" xbabylon
(2.2.3) KDE (KWM)
KDE メニューに入れないと使えないようです。(Windowsに似ている?)
kmenuedit を立ち上げて、どこかに XBabylon を新規項目で作成します。設
定画面中の下のほうに、「現在のキー」というものがありますので、そこに例
えば、Ctrl+Shift+B などを設定します。因みに、マウスボタンはショートカッ
トには設定できないようです。
(3) 使い方
インストールが終れば、double click か mouse drag でテキストを選択状態
にした後、設定したショートカット(上の例では Shift-mouse 3)を推せば、訳
語が書かれた Window が出てきます。この Window は一定時間後自動的に消滅
します。読み終わるまでマウスを入れておくと消えません。(この時間を変え
たければ、xbabylon.c の中の以下の値を変更して下さい)
#define SEC_BEFORE_DISAPPEAR (3) // 今は3秒
(4) TODO
欲しい feature は加えて行こうと思いますので、要望があれば教えていただ
けるとやる気が起きます。自分で考えていることを少し書いておきます。
+ Babylon は OCR を使っているが、XBabylon は cut buffer を使っている
ので、cut buffer (もしくは selection)対応でない application では使え
ない。OCR の場合の表示された語はなんでも翻訳可能といるのは素晴しいが、
反面、誤認識も多く、一長一短である。(あまりやる気がしない。Freeの使
い易い OCR があればやっても良いと思っている)
+ 翻訳の表示を折り返し表示に一応対応した。が、EUC をきちんと読んでい
ないので、バグっているかもしれない。きちんと直したいものだ。
+ 辞書の著作権がはっきりしないので、edict を使ったほうが良いと思うが、
和英の形式なのでちょっと使いにくい。著作権的には、Linux で既に定番の
英和辞書のようなので、問題はないのでしょうね。検索時間が問題にならな
いので、もっと大きな辞書を使いたいと思う。
+ Pentium 166 の NotePC でさくさく動いているので、重くないと思うけど、
必要なら辞書サーバを分けるなどして、辞書検索を高速化することは可能。
検索自体はベタサーチでしかもケース毎に何回も嘗めている。しかし特に遅
さは感じないので、これで良いでしょう。
また、ストレージの乏しいノートの場合に辞書が大き過ぎるとかいうケース
では、gzip とかで圧縮する手もある。が、zlib を使ってみたらかなり遅く
なるので止めた。
+ 実用のため、Capital letter、現在分詞、過去形などに対応したが、行き
当りばったりです。正しい取り扱いを教えて欲しい。
また、この辺りが英語に特化していますので、英和のみ対応になっています。
基本的には、strcmp しているだけですので、何語辞書でも良いです。また、
表示部がやはり日本語に特化しているので、ここを直せば何語でも OK です。
(もっと、i18n で統一的な方法が使えると良いのですが…)
+ もっとも使いたいアプリである mozilla 上では沢山のゴミが selection
に付いてくるので対策してありますが、quick & dirty なコードです。
kterm とかに張ったときは大丈夫なので、systematic な方法があると思う
のですが。
+ 恰好の良い GUI tool kit を使う。重くならないのだったら、Gtk とかに
しても良いかなぁ。でも実は使ったことがないのです。xview だったら書け
るんですが…。
+ 辞書が非力なので、追加の検索機能が欲しい気持ちもある。辞書内に見つ
からない場合は、http で Web Search する機能(Babylon にはある)かなぁ。
(5) Change log
(0.9.3)
man を整備した。
(0.9.1)
Fedora Core 用に、UTF-8 locale に対応した。他の日本語ロケール
(SJIS)等でも動作します。
(0.9.0)
SourceForgel.jp に移行することにした。
(0.27)
buffer overflowの危険のあるコードを直す。
(0.26)
mail(郵便、鎧)など、同綴異義語に対応した。ソースが大きくなった
ので、ファイルを分割した。
(0.25)
探索語を赤で表示した。-d dictionary_file に対応した。
(0.24)
文字数に応じたサイズになるようにした。(ソースが大分汚くなった)
(0.23)
ヰンドウに色を付けました。WindowManager による制御から外し、
mouse の左上に枠無しで表示することにした。見栄えは Babylon に
結構似てきました。^_^
(0.16)
Mozilla からカットにまだ、問題があるようだ。なんか余分なゴミが
付いて来る。Mozilla で使えないと意味がないので、Q&D な Fix を
した。
(0.15)
Window が focus されている間は消さないようにした。
(0.14)
単語末に付いた space を取り除く処理を入れた。これは Mozilla
においてダブルクリックで撰択すると、単語間の space を一緒に取
る buggy な仕様に対応するため。
三単現や複数形のS、過去形の ed などに対応した。(いい加減)
(0.13)
いらない XFlush とかを除いて、コードを整理した。
(0.12)
Netscape, Mozilla に対応させるため、selection 対応にした。
(0.10)
最初のリリース。