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

ロケール管理

言語環境という用語は、アプリケーションがユーザの指定したロケールで正しく実行するために必要な、ローカライズされたデータのセットを言います。言語環境は、特定の言語に関連する規則を提供します。また、言語環境は、外部に格納されたすべてのデータから成ります。このデータは、アプリケーションが使用するローカライズされた文字列やテキストなどです。たとえば、アプリケーションが表示するメニュー項目は、アプリケーションがサポートする言語別に、別ファイルに格納されている可能性があります。この型のデータは、リソース・ファイル、UID (ユーザ・インタフェース定義) ファイル、(XPG3 準拠システムの) メッセージ・カタログに格納できます。

1 つの言語環境は、1 つのアプリケーションが動作するときに確立されます。アプリケーションが実行される言語環境は、アプリケーション・ユーザによって、環境変数 (POSIX システムの LANG または LC_*) か xnlLanguage リソースのいずれかにより設定されます。その後アプリケーションはユーザの指定に基づいて言語環境を設定します。アプリケーションはこの設定を、XtSetLanguageProc() 関数に確立された言語プロシージャの setlocale() 関数を使って行うこともできます。これにより Xt は、XtResolvePathname() 関数がリソース、ビットマップ、UIL (ユーザ・インタフェース言語) ファイルを見つけるのに使用するディスプレイごとの指定言語文字列をキャッシュします。

言語プロシージャを提供するアプリケーションは、独自のプロシージャを提供するか、あるいは Xt デフォルト・プロシージャを使用することができます。どちらの場合も、アプリケーションは、ツールキットを初期化する前、また (XtAppInitialize() 関数を呼び出すなどして) リソース・データベースを読み込む前に XtSetLanguageProc() を呼び出すことにより、言語プロシージャを確立します。言語プロシージャがインストールされると、Xt は初期リソース・データベースの構築中にその言語プロシージャを呼び出します。Xt は言語プロシージャが返す値をディスプレイごとの指定言語文字列に使用します。

デフォルトの言語プロシージャは次のタスクを実行します。

アプリケーションは、次のように XtSetLanguageProc() 関数を呼び出すことにより、デフォルト言語プロシージャを使用できます。

XtSetLanguageProc(NULL, NULL, NULL);
  		.
  		.
toplevel = XtAppInitialize(...);

デフォルトでは、Xt は言語プロシージャを何もインストールしません。アプリケーションが XtSetLanguageProc() 関数を呼び出さないと、Xt はディスプレイごとの指定言語文字列に xnlLanguage リソースが設定されている場合は、その値を使用します。xnlLanguage リソースが設定されていない場合は、Xt は言語文字列を LANG 環境変数から獲得します。


注 -

このプロセスから得られるディスプレイごとの指定言語文字列は実装に依存します。また、いったん言語文字列が確立されると、Xt は言語文字列を調べる公共の手段を提供しません。


独自の言語プロシージャを提供することにより、アプリケーションは言語文字列を設定する際にどんなプロシージャでも使用できます。