フリーSolarisでここまでやれる! |
山森丈範 YAMAMORI Takenori ●yamamori |
こちらは旧版です.
現在、Java アプレットも動作可能になった
[改訂版] を公開しています。
[改訂版] の方を御覧下さい。
日本語 locale の無い Free Solaris 7 上で,Netscape の日本語化に挑戦しましょう.
lesstif が安定すればそちらに移行したいところですが,現状では Solaris 7 に付属の Motif をインストールします.SUNWmfrun にあります.(依存警告が出ますが無視します)
# cd /usr/X11R6.4/lib # ln -s libXmu.so libXmu.so.4 # ln -s libXt.so libXt.so.4 # ln -s libX11.so libX11.so.4 # ln -s libXext.so libXext.so.0
として,X11R6.4 の Xlib を,openwin のバージョン番号ででも参照できるようにします.
fakelocale.c を用いて,共有ライブラリーを作成し,netscape の実行時に LD_PRELOAD で読み込ませます.setlocale() で XtSetLanguageProc() を呼んでいますが,これだけでは不十分で,XmTextField などがおかしくなります.原因は /usr/dt/lib/libXm.so.3 が libc 内の mbtowc() などのマルチバイトや wchar 関係の関数を直接呼んでいるためです.そこで,fakelocale.c では mbtowc() などのエミュレートも行なっています.これで XmTextField も OK になります.fakelocale.c のコンパイルは,
$ gcc -shared -fPIC -o fakelocale.so \ fakelocale.c -O2 -pipe \ -I/usr/X11R6.4/include \ -R/usr/dt/lib -R/usr/X11R6.4/lib \ -L/usr/dt/lib -L/usr/X11R6.4/lib \ -lXm -lXmu -lXt -lX11 -lXext
とします.この時点でライブラリのリンク順を固定するため,fakelocale.c 自身が呼んでいないライブラリーもリンクしておきます.
コンパイルできたらインストールします.
# install -c fakelocale.so /usr/X11R6.4/lib
リソースファイル Netscape を作り ます.Netscape 3.x 4.x 共通です.オリジナルの Netscape.ad とマージする必要はありません.
リソースファイルは,たとえば /usr/local/lib/netscape などのディレクトリの下に置き,このディレクトリを XAPPLRESDIR で指定するようにします.
netscape408 のような起動スクリプトを書きます.LD_PRELOAD と LD_LIBRARY_PATH を両方指定するのがポイントです.これで日本語対応の Netscape が立ち上がります.(リストは Netscape 4.08 での例ですが,他のバージョンでも同様です)
FilterEvents に対応した kinput2 を使っていれば,kinput2 での日本語入力もできます.
Netscape 3.04, 4.08, 4.5 すべてについて,動作を 確認しました.(Netscape 4.5 については,Xlib がダイナミックリンクされた Solaris2.4 用バイナリを使って下さい)
現状,なぜか Netscape 上で JAVA アプレットが動作しないようです.(JavaScript は動きます)しかし,JDK が動作するため,とりあえず「よし」とします.
現在、Java アプレットも動作可能になった
[改訂版] を公開しています。
[改訂版] の方を御覧下さい。