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

ロケール管理

デスクトップでは、ほとんどの単一画面のクライアントは、実行時に環境変数 (通常は $LANG) の設定から決定される単一のロケールで操作を行います。Xm ライブラリ (libXm) は、各ウィジェットがインスタンスを生成する際に使用する単一のロケールしかサポートできません。Xm ライブラリを初期化した後にロケールを変更した場合、予測できない動作をすることがあります。

すべての国際化対応プログラムは、ロケール環境変数に定義される、ユーザの希望するロケールを設定しなければなりません。デスクトップ・ツールキットを使用するプログラムの場合、プログラムはどのツールキット初期化関数 (たとえば XtAppInitialize()) よりも先に XtSetLanguageProc() 関数を呼び出します。この関数は、ツールキット初期化の前に必要なすべての初期化を行います。非デスクトップ・プログラムの場合は、プログラムはユーザの希望するロケールを設定するために、プログラムの最初に setlocale() 関数を呼び出します。

環境をコントロールするには、ロケール環境変数 (たとえば LC_ALLLC_CTYPELANG など) が使用されます。ユーザは、実行時に使用されるロケール固有の機能を識別するために、ロケールの LC_CTYPE カテゴリが X および Xm ライブラリによって使用されることを覚えておいてください。しかし LC_MESSAGES カテゴリは、メッセージ・カタログ・サービスにより、ロケール固有のテキストを読み込むのに使用されます。詳細は、「ローカライズされたテキストの抽出」を参照してください。特にツールキットが読み込むフォントと入力メソッドは、LC_CTYPE カテゴリを設定することによって決定されます。

文字列のエンコーディング (たとえばアプリケーションのソースコード、リソース・ファイル、UIL (ユーザ・インタフェース言語) ファイルでの ISO8859-1 または 拡張 UNIX コード (EUC)) は、アプリケーションが実行するロケールのコード・セットと同じでなければなりません。同じでない場合はコード変換が必要です。

すべてのコンポーネントは単一で世界中で実行可能な状態で出荷され、ロケールの X11R5 サンプル・インプリメンテーション・セット (米国、西欧/東欧、日本、韓国、中国、台湾) をサポートする必要があります。

アプリケーションはコード・セットに依存せず、すべてのマルチバイト・コード・セットをサポートするように記述しなければなりません。

ロケール管理に使用する関数を次に示します。