[CONTENTS] [PREV] [NEXT]

Xの国際化クライアントのインストール

概説

X11R6 の Athene Widget(以下 Xaw) は標準で国際化の機能が組み込まれており、 Xaw を用いて作成された X のクライアントは比較的容易に国際化が可能です。

この国際化は、locale 関数群を利用しており、NetBSD で利用するには、 X を X_LOCALE を組み込んで作成しておく必要があります。

Xaw での 国際化の手順はおおむね以下のとおりです。 クライアントによっては、デザインが狂ったりするので調整が必要に なることもあります。

  1. main() の最初のほうに、 XtSetLanguageProc(NULL,NULL,NULL); を加える
  2. widget の定義部の
    asciiSrcObjectClass を multiSrcObjectClass に変更する
    asciiSinkObjectClass を multiSinkObjectClass に変更する
  3. リソースに *International: true を加える
    リソースに *FontSet の設定を加える

リソースファイルは、

  1. $(LIBDIR)/$(LANG)/app-defaults/クラス名
  2. $(LIBDIR)/app-defaults/クラス名
の順番によむので、もとのリソースファイルに
*international: true
*fontSet: -*-fixed-medium-r-normal--14-*
を加えたものを、$(LIBDIR)/$(LANG)/app-defaults に置けば、 環境変数 LANG によって国際化版とそうでないものの切替が可能です。

具体的には、

setenv LANG ja_JP.EUC
としておけば、 $(LIBDIR)/ja_JP.EUC/app-defaults の設定ファイルを読みにいって 国際化機能 ON, locale japanese で動作して、
setenv LANG C
とすると、 $(LIBDIR)/app-defaults の設定ファイルを読みにいって、 国際化機能 OFF, locale C で動作するようになります。

なお、Xawでの国際化クライアントは、XIMによる入力が可能となっています。 この設定については、 kinput2の解説を参照して下さい。

Xawのバグの修正

さて、上で解説した Xaw-I18N による国際化は比較的容易なのですが、 実は現バージョン(X11R6.1)の Xaw の国際化にはいくつか致命的なバグが あります。具体的にはメモリリークによる Segmentation Fault など が起こります。2つほど原因の箇所を発見してあります。(X cons. への リポートは完了しています)これを利用するには2つの方法があります。
  1. Xaw をコンパイルしなおす
    Xaw のソースディレクトリ(xc/lib/Xaw) で以下に示すパッチをあてて、 再度 make, make install します。
  2. クライアントのコンパイル時に該当オブジェクトをリンクする
    パッチをあてた該当ファイルをクライアントのコンパイル時に一緒に コンパイルしてリンクすればそちらが優先されるので問題無く 動作するようになります。

Xaw のバグをとるパッチ

このパッチをあてるには以下のようにします。

% cd $(TOPDIR)/xc/lib/Xaw
% patch < XawI18n-bugfix.patch

Xcalendar のインストール

XCalender は、日別にメモをつけることのできるカレンダーです。

ソースの入手先は ftp://ftp.tut.ac.jp/X11/X11R6/contrib/programs/xcalender.tar.gz です。

ファイルの変更

Imakefile

  EXTRA_DEFINES = -DATHENA
を次のように変更
  EXTRA_DEFINES = -DATHENA -DXI18N
#
# for Internationalization
#
#XCal-uj.ad: XCal-uj.sed
#    sed 's;%%XCALENDAR_LIBDIR%%;$(XCALENDAR_LIBDIR);'\
#    < $? \
#    > $@
#install:: XCal-uj.ad
#    MakeDir($(LIBDIR)/ja_JP.ujis/app-defaults)
#    $(INSTALL) -c $(INSTAPPFLAGS) XCal-uj.ad $(LIBDIR)/ja_JP.ujis/app-defaults/XCalendar

#clean::
#    $(RM) XCal-uj.ad
#
# for Internationalization
#
XCal-uj.ad: XCal-uj.sed
    sed 's;%%XCALENDAR_LIBDIR%%;$(XCALENDAR_LIBDIR);'\
    < $? \
    > $@
install:: XCal-uj.ad
    MakeDir($(LIBDIR)/japanese/app-defaults)
    $(INSTALL) -c $(INSTAPPFLAGS) XCal-uj.ad $(LIBDIR)/japanese/app-defaults/XCa
lendar

clean::
    $(RM) XCal-uj.ad
にする。 ja_JP.ujis -> japanese に注意。

xcalender.h

74行目:
#ifdef XI18N
#include <X11/Xaw/Xawi18n.h>
#endif
を削除

コンパイル/インストール

% uudecode < XCal-uj.uu
% xmkmf
% make
% echo "*international: true" >> XCal-uj.sed
% echo "*fontSet: -*-fixed-medium-r-normal--14-*" >> XCal-uj.sed

XMascot

XMascotは、X の画面上にかわいいマスコットを表示するための アプリケーションです。

XMascot は、始めから国際化を想定して作成されています。 入手先は ftp://cclub.tutcc.tut.ac.jp/pub/xmascot/xmascot2.5.tar.gz などです。

Imakefile 中の

#undef USE_I18N を #define USE_I18N
にして、コンパイルするのみです。
% xmkmf -a
% make
% su
# make install

メニュー部分が日本語表示可能になります。

[CONTENTS] [PREV] [NEXT]