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

コンパウンド・ストリングのコンポーネント

コンパウンド・ストリングは、タグ長値のセグメントから成る内部のエンコーディングです。意味上では、コンパウンド・ストリングには、表示されるテキスト、フォント・リストの要素に一致するタグ (フォント・リスト要素タグ)、表示する方向を示すインジケータなどのコンポーネントがあります。

コンパウンド・ストリングのコンポーネントは、次の 4 つのいずれかの型になります。

コンパウンド・ストリングの各コンポーネントを説明します。

フォント・リスト要素タグ

コンパウンド・ストリングのテキスト・コンポーネントをフォント・リストのフォントまたはフォント・セットに相関させる文字列の値を示します。

方向

文字がキーボードに入力される順序と、その文字が画面に表示される順序の関係を示します。たとえば、英語、フランス語、ドイツ語、イタリア語の表示順序は左から右であり、ヘブライ語とアラビア語の表示順序は右から左です。

テキスト

表示されるテキストを示します。

セパレータ

値がない特殊な形式のコンパウンド・ストリングのコンポーネントを示します。セパレータは他のセグメントを区切るのに使用されます。

共通デスクトップ環境では、コンパウンド・ストリングを表示するために、テキスト・コンポーネントで識別される指定されたフォント・リスト要素タグを使用します。指定されたフォント・リスト要素タグは、新しいフォント・リスト要素タグが見つかるまで使用します。共通デスクトップ環境は、現在のコード・セットに対して正しいフォントに一致する特別なフォント・リスト要素タグ XmFONTLIST_DEFAULT_TAG を提供します。XmFONTLIST_DEFAULT_TAG はフォント・リストのデフォルト・エントリを識別します。詳細は、「コンパウンド・ストリングとフォント・リスト」を参照してください。

コンパウンド・ストリングの方向セグメントは、テキストが表示される方向を指定します。方向は左から右または右から左です。

コンパウンド・ストリングとリソース

コンパウンド・ストリングは、Text ウィジェットと TextField ウィジェット以外のすべてのテキストを表示するのに使用されます。コンパウンド・ストリングは、表示できるように適切なウィジェット・リソースに設定されます。たとえば、PushButton ウィジェットのラベルは Label ウィジェットから引き継がれ、リソースは XmNlabelString で型は XmString です。このことは、リソースがコンパウンド・ストリングの値を予想していることを意味します。コンパウンド・ストリングはプログラムで作成したり、リソース・ファイルで定義することが可能です。

プログラムでのコンパウンド・ストリングの設定

アプリケーションは、XmStringCreateLocalized() コンパウンド・ストリング簡易関数を使用してコンパウンド・ストリングを作成することで、このリソースをプログラムで設定できます。

この関数は、現在のロケールのエンコーディングでコンパウンド・ストリングを作成し、自動的に XmFONTLIST_DEFAULT_TAG をフォント・リスト・エントリ・タグに設定します。

次のコードの一部分は、プログラムを使用してプッシュ・ボタンに XmNlabelString リソースを設定するための 1 つの方法を示します。

#include        <nl_types.h>  
Widget          button;  
Args            args[10];  
int             n; 
XmString button_label;  
nl_msg my_catd;  
(void)XtSetLanguageProc(NULL,NULL,NULL);
  		.
  		.  
button_label = XmStringCreateLocalized (catgets(my_catd, 1, 1,
                                        "default label"),
                                        XmFONTLIST_DEFAULT_TAG);   

/* Create an argument list for the button */  
n = 0;  
XtSetArg (args[n], XmNlabelString, button_label); n++;   

/* Create and manage the button */  
button = XmCreatePushButton (toplevel, "button", args, n);  
XtManageChild (button);  
XmStringFree (button_label);

コンパウンド・ストリングのデフォルト・ファイルへの設定

国際化対応プログラムでは、ボタン・ラベル用のラベル文字列は外部リソースから獲得してください。たとえば、ボタン・ラベルはプログラムではなくリソース・ファイルから得られます。次の例では、プッシュ・ボタンは form1 と呼ばれる Form ウィジェットの子であると想定します。

*form1.button.labelString: Push Here

ここで、デスクトップの文字列からコンパウンド・ストリングへのコンバータは、リソース・ファイル・テキストからコンパウンド・ストリングを生成します。このコンバータは常に XmFONTLIST_DEFAULT_TAG を使用します。