タイトルを設定する一般的な方法は、リソースを使用することです。しかしアプリケーションが直接ウィンドウのタイトルを設定する場合は、ローカライズされたタイトルをウィンドウ・マネージャに送信しなければなりません。次のガイドラインの他に、XICCEncodingStyle() に定義された XCompundTextStyle() エンコーディングを使用してください。
コンパウンド・テキストは、XmbTextListToTextProperty() か XwcTextListToTextProperty() のいずれかで作成できます。
ローカライズされたタイトルは、WMShell() ウィジェットの XmNtitle() リソースと XmNtitleEncoding() リソースを使用して表示できます。ローカライズされたアイコン名は、TopLevelShell() ウィジェットの XmNiconName() リソースか XmNiconNameEncoding() リソースを使用して表示できます。
ダイアログ・ボックスのローカライズされたタイトルは、XmBulletinBoard() ウィジェットの XmNdialogTitle() リソースを使用して表示できます。
ウィンドウ・マネージャは、ローカライズされた文字列を表示するのに適切なフォント・リストを持っていなければなりません。
次の例は、ローカライズされたタイトルとアイコン名を表示します。この例ではコンパウンド・ストリングからコンパウンド・テキストが作成されます。
#include <nl_types.h>
Widget toplevel;
Arg al[10];
int ac;
XTextProperty title;
char *localized_string;
nl_catd fd;
XtSetLanguageProc( NULL, NULL, NULL );
fd = catopen( "my_prog", 0 );
localized_string = catgets(fd, set_num, mes_num, "defaulttitle");
XmbTextListToTextProperty( XtDisplay(toplevel), &localized_string,
1, XCompoundTextStyle, &title);
ac = 0;
XtSetArg(al[ac], XmNtitle, title.value); ac++;
XtSetArg(al[ac], XmNtitleEncoding, title.encoding); ac++;
XtSetValues(toplevel, al, ac);
ウィジェットでなくウィンドウを使用している場合は、XmbSetWMProperties() 関数がローカライズされた文字列を適切な XICCEncodingStyle に自動的に変換します。