フリーSolarisでここまでやれる!

山森丈範 YAMAMORI Takenori ●yamamori

X_LOCALE で Netscape ! (旧版)

こちらは旧版です.
現在、Java アプレットも動作可能になった [改訂版] を公開しています。
[改訂版] の方を御覧下さい。

日本語 locale の無い Free Solaris 7 上で,Netscape の日本語化に挑戦しましょう.


Netscape 3.x, 4.x は,openwin のライブラリと動的リンクした状態でのバイナリでしか配布されておらず, かつ,Free Solaris 7 の openwinや libc には,日本語 locale が無いため,たとえ Netscape のリソースで日本語フォントを設定しても,正しく日本語化されません. 筆者は,Netscape を X_LOCALE 付きの X11R6.4 と強引にリンクすることによって, ほぼ完全なレベルまで日本語対応することができましたので,その方法を紹介します.
○Motif だけはインストールする

lesstif が安定すればそちらに移行したいところですが,現状では Solaris 7 に付属の Motif をインストールします.SUNWmfrun にあります.(依存警告が出ますが無視します)

○openwin のライブラリに見せかける
    # 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 のバージョン番号ででも参照できるようにします.

setlocale(), mbtowc() などのエミュレート

fakelocale.c を用いて,共有ライブラリーを作成し,netscape の実行時に LD_PRELOAD で読み込ませます.setlocale()XtSetLanguageProc() を呼んでいますが,これだけでは不十分で,XmTextField などがおかしくなります.原因は /usr/dt/lib/libXm.so.3libc 内の 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 を作り ます.Netscape 3.x 4.x 共通です.オリジナルの Netscape.ad とマージする必要はありません.

リソースファイルは,たとえば /usr/local/lib/netscape などのディレクトリの下に置き,このディレクトリを XAPPLRESDIR で指定するようにします.

○起動スクリプトの作成

netscape408 のような起動スクリプトを書きます.LD_PRELOADLD_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 アプレットも動作可能になった [改訂版] を公開しています。
[改訂版] の方を御覧下さい。


To 『フリー Solaris でここまでやれる!』index


このページは、技術評論社 SoftwareDesign 1999年2月号、『フリーSolarisでここまでやれる!』の原稿を元に、Web 用に再構成したものです。
To 謎の処理系 SunOS 4.1.4 Home
yamamori