共通デスクトップ環境 プログラマーズ・ガイド (国際化対応編)

国際化対応ユーザ・インタフェース言語のプログラミング

UIL コンパイラは、標準にはない charset をロケール・テキストとして解析します。そのためには、UIL コンパイラがどのロケール・テキストとも同じロケールで実行する必要があります。

ウィジェットのロケール・テキストにフォント・セット (複数のフォント) が必要な場合、フォント・セットがリソース・ファイル内に指定されなければなりません。font パラメータはフォント・セットをサポートしません。

UIL に特定の言語を使用するために、UIL ファイルが目的の言語の特徴に応じて記述され、UID ファイルにコンパイルされます。ローカライズされたテキストを格納している UIL ファイルは、それを実行するロケールにコンパイルする必要があります。

文字列リテラル

文字列リテラルの例を次に示します。cur_charset の値は常に default_charset の値に設定されており、それによって文字列リテラルがロケール・テキストを格納できます。

default_charset の値でロケール・テキストを文字列リテラルに設定するには、次のように入力します。

XmNlabelString = 'XXXXXX';

または、次のように入力します。

XmNlabelString = #default_charset"XXXXXX";

ロケール・テキストのエンコーディングに一致する LANG 環境変数で UIL ファイルをコンパイルしてください。そうでない場合、文字列リテラルは正しくコンパイルされません。

フォント・セット

フォント・セットは UIL ソース・プログラミングを介して設定することはできません。フォント・セットが必要な場合は、次の例のように必ずリソース・ファイルにフォント・セットを設定してください。

*fontList: -*-r-*-20-*:

フォント・リスト

UIL はフォント・リストの作成に使用する 3 つの関数 (FONTFONTSETFONT_TABLE) を持っています。FONT 関数と FONTSET 関数はフォント・リスト・エントリを作成します。FONT_TABLE 関数はそれらのフォント・リスト・エントリからフォント・リストを作成します。

FONT 関数はフォント指定を含むフォント・リスト・エントリを作成します。引き数は XLFD フォント名を表す文字列です。FONTSET 関数は、フォント・セット指定を含むフォント・リスト・エントリを作成します。引き数は、ベース名フォント・リストを表すカンマで区切られた XLFD フォント名のリストです。

FONTFONTSET には両方とも、フォント・リスト・エントリのフォント・リスト要素タグを指定するオプションの CHARACTER_SET 宣言パラメータがあります。どちらの場合も、CHARACTER_SET 宣言パラメータが指定されない場合は、UIL が次のようにフォント・リスト要素タグを決定します。

FONT_TABLE 関数は、FONT または FONTSET により作成された、カンマで区切られたフォント・リスト・エントリのリストからフォント・リストを作成します。その結果のフォント・リストは、フォント・リスト・リソースの値として使用できます。そのようなリソースの値として単一のフォント・リスト・エントリが提供される場合は、UIL はそのエントリをフォント・リストに変換します。

リソース・ファイルの作成

必要であれば、次の例のように入力メソッド関連リソースをリソース・ファイルに設定してください。

*preeditType:				OverTheSpot、OffTheSpot、Root、または None

環境の設定

ロケールを区別するアプリケーションの場合は、UID ファイルを適切なディレクトリに設定してください。UIDPATH または XAPPLRESDIR 環境変数を適切な値に設定してください。

たとえば、英語環境で uil_sample プログラムを実行するには (LANG 環境変数は en_US) 、$HOME/en_US ディレクトリにラテン文字で uil_sample.uid を設定するか、またはあるディレクトリに uil_sample.uid を設定して UIDPATH 環境変数に uil_sample.uid ファイルの完全パス名を設定してください。

uil_sample プログラムを日本語環境で実行するには (LANG 環境変数は ja_JP)、$HOME/ja_JP ディレクトリに日本語の (マルチバイト) 文字で uil_sample.uid ファイルを作成するか、または uil_sample.uid を一意のディレクトリに配置して UIDPATH 環境変数に uil_sample.uid ファイルの完全パス名を設定してください。次のリストは可能な変数を指定します。

%U

UID ファイル文字列を指定します。

%N

アプリケーションのクラス名を指定します。

%L

xnlLanguage リソースか LC_CTYPE カテゴリの値を指定します。

%l

xnlLanguage リソースか LC_CTYPE カテゴリの言語コンポーネントを指定します。

XAPPLRESDIR 環境変数が設定されている場合、MrmOpenHierarchy() 関数が次の順番で UID ファイルを検索します。

  1. UID ファイル・パス名

  2. $UIDPATH

  3. %U

  4. $XAPPLRESDIR/%L/uid/%N/%U

  5. $XAPPLRESDIR/%l/uid/%N/%U

  6. $XAPPLRESDIR/uid/%N/%U

  7. $XAPPLRESDIR/%L/uid/%U

  8. $XAPPLRESDIR/%l/uid/%U

  9. $XAPPLRESDIR/uid/%U

  10. $HOME/uid/%U

  11. $HOME/%U

  12. /usr/lib/X11/%L/uid/%N/%U

  13. /usr/lib/X11/%l/uid/%N/%U

  14. /usr/lib/X11/uid/%N/%U

  15. /usr/lib/X11/%L/uid/%U

  16. /usr/lib/X11/%l/uid/%U

  17. /usr/lib/X11/uid/%U

  18. /usr/include/X11/uid/%U

XAPPLRESDIR 環境変数が設定されていない場合は、MrmOpenHierarchy() 関数は XAPPLRESDIR 環境変数の代わりに $HOME を使用します。