X11R6 の Athene Widget(以下 Xaw) は標準で国際化の機能が組み込まれており、 Xaw を用いて作成された X のクライアントは比較的容易に国際化が可能です。
この国際化は、locale 関数群を利用しており、NetBSD で利用するには、 X を X_LOCALE を組み込んで作成しておく必要があります。
Xaw での 国際化の手順はおおむね以下のとおりです。 クライアントによっては、デザインが狂ったりするので調整が必要に なることもあります。
リソースファイルは、
*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つの方法があります。
このパッチをあてるには以下のようにします。
% cd $(TOPDIR)/xc/lib/Xaw % patch < XawI18n-bugfix.patch
ソースの入手先は ftp://ftp.tut.ac.jp/X11/X11R6/contrib/programs/xcalender.tar.gz です。
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 に注意。
#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は、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
メニュー部分が日本語表示可能になります。