RUIPropertiesLibrary ステレオタイプ
Rich UI アプリケーションでテキストをハードコーディングするのではなく、外部ファイルから表示可能なテキストを取得する場合は、Rich UI プロパティー・ライブラリー (ステレオタイプ RUIPropertiesLibrary) をセットアップします。全体的なメカニズムについては、『表示可能テキストのプロパティー・ファイルの使用』で説明します。Rich UI プロパティー・ライブラリーで暗黙の関数を使用して、任意のストリングの値を置換することもできます。
以下に、Rich UI プロパティー・ライブラリーの例を示します。
Library myLibrary type RUIPropertiesLibrary {propertiesFile="myFile")
entryForInputRequired STRING;
entryForOthers STRING;
someText STRING;
end
宣言で直接割り当てられている値 (例えば、someText String = "Click!";) はすべて無効です。1 つの例外を除き、すべてのランタイム値が外部ファイルから取得されます。ファイルに特定のエントリーが含まれていない場合 (例えば、ファイルに someText のエントリーが含まれていない場合) は、実行時の値は、変数名 (例えば、「someText」) に等しいストリングになります。
propertiesFile プロパティー
propertiesFile プロパティーは、ファイルのルート名を参照します。ファイル (または、複数の変換が使用可能な場合は複数のファイル) は、プロジェクトの WebContent/properties ディレクトリーに直接配置する必要があります。ルート名には、次の詳細は含めないでください。
- 「properties/myFile」などのパス情報
- ハイフン
- 「en_US」など、変換に固有の情報
- ファイル拡張子。必ず properties です。
propertiesFile のデフォルト値はライブラリーの名前 (この場合は「myLibrary」) です。
関数 getMessage
すべての RUI プロパティー・ライブラリーには、関数 getMessage が暗黙的に含まれています。この関数を使用すると、プロパティー・ファイル、またはコード内のストリングからメッセージを選択するときに inserts を追加できます。例えば、プロパティー・ファイル内の次のメッセージでは、2 つの inserts が必要です。
someText=Promote {0} in the {1} department
以下に、ストリング「Promote Jeff in the Sales department」をラベルに書き込むサンプル・コードを示します。
employeeName, departmentName String;
employeeName = "Jeff";
departmentName = "Sales";
myLabel TextLabel {text =
myLibrary.getMessage(myLibrary.someText, [employeeName, departmentName]);
代替の呼び出しは、前の呼び出しと同じ影響を及ぼしますが、プロパティー・ファイルにはアクセスしません。
myMessage STRING = "Promote {0} in the {1} department";
myLabel TextLabel {text =
myLibrary.getMessage(myMessage, [employeeName, departmentName]);
以下に、関数シグニチャーを示します。
getMessage(baseMessage STRING in, inserts STRING[] in) returns (fullMessage STRING);
- baseMessage
- RUI プロパティー・ライブラリー内のストリングまたはフィールド。
- inserts
- ストリングの配列。最初の要素はプレースホルダー {0} の挿入を提供し、2 番目の要素はプレースホルダー {1} の挿入を提供し、以下同様に続きます。
- fullMessage
- 可能な限り多くのプレースホルダーが解決された基本メッセージ。
inserts は、0 から始まる昇順です。メッセージ内のプレースホルダーは、任意の順序にすることができ、順序どおりである必要はありません。挿入の数がプレースホルダーの数と一致しない場合は、挿入は未使用です。プレースホルダーが未解決である場合は、プレースホルダー自体が戻されるメッセージ内にあります。例えば、以下の場合は、戻されるメッセージは「Promote Jeff in the {1} department」です。
employeeName STRING = "Jeff";
myMessage STRING = "Promote {0} in the {1} department";
myLabel TextLabel {text =
myLibrary.getMessage(myMessage, [employeeName]);
検証のオーバーライドまたはメッセージのフォーマット時は関数 getMessage を使用できません。そのようなメッセージに inserts を渡すことはできません。