Rich UI により、実行時に使用する外部ファイルで表示可能テキストを定義できます。
このようにテキストを定義する具体的な理由を以下に示します。
- デフォルトで、失敗した入力検査や入出力の誤ったフォーマットに使用可能な、ランタイム・メッセージをオーバーライドするため。
- Rich UI アプリケーションでテキストをハード・コーディングせずに、テキストをウィジェットに割り当てるため。
- 広範囲にコードが使用されるよう、さまざまな言語でテキストを表示するため。
検査またはフォーマットのメッセージのオーバーライド
検査またはフォーマットのメッセージをオーバーライドする場合、以下を実行します。
- 『Rich UI の検査およびフォーマット設定』で説明されているコントローラー・メカニズムを使用していることを確認します。
- Rich UI プロパティー・ライブラリー (ステレオタイプ RUIProperties を持つライブラリー・パーツ) を作成します (『RUIPropertiesLibrary ステレオタイプ』を参照)。この例では、ライブラリー名は myLibrary であり、ライブラリーは entryForInputRequired および entryForOthers というストリングの宣言をインクルードします。
これらの変数名には大/小文字の区別があります。
- Rich UI ハンドラーまたはその他のコードにおいて、他の検査プロパティーおよびフォーマット・プロパティーとともに、パーツ定義または変数宣言でプロパティー validationPropertiesLibrary を指定します。
宣言の例を以下に示します。
name STRING {inputRequired = yes,
lowercase = yes,
inputRequiredMsgKey = "entryForInputRequired",
typeChkMsgKey = "entryForOthers",
validationPropertiesLibrary=myLibrary };
プロパティー validationPropertiesLibrary は、検査およびフォーマットのメッセージをオーバーライドする場合にのみ使用します。
- プロパティー・ファイルをセットアップし、項目 (名前と値のペア) をインクルードします。この名前は、MsgKey プロパティーの値と一致します。現在の例では、プロパティー・ファイルは以下の項目をインクルードします。
entryForInputRequired=You must specify a value
entryForOthers=Your input is incorrect
someText=Not mentioned
プロパティー・ファイルはテキスト・ファイルです。項目名には大/小文字の区別があり、Rich
UI プロパティー・ライブラリー内のストリング宣言と一致する場合にのみ有用です。
現在の例の影響を以下に示します。
- 実行時の入力要求エラーでは、メッセージ「値を指定する必要があります」が表示されます。これは、名前 entryForInputRequired で識別されます。
- 実行時に大文字を入力した場合にも、メッセージ「Your input is incorrect (入力に誤りがあります)」が表示されます。
さまざまなエラーに対する応答としてプロパティー typeChkMsgKey の値が使用されるため、この結果が発生します。
この場合、小文字プロパティーで許可されないユーザー入力 (大文字) に対する応答として、この処理が行われます。
ウィジェットへのテキストの割り当て
外部ファイルからテキストを表示する Rich UI メカニズムは、テキストの目的にかかわらず、常に Rich UI プロパティー・ライブラリーを使用します。
デフォルト・メッセージのオーバーライド以外の目的で外部ファイルを使用する場合、常に以下の記述が適用されます。
ライブラリー関数 getMessage を使用して、コード内のストリングへの挿入を処理することもできます。
挿入の使用方法の詳細については、『RUIPropertiesLibrary ステレオタイプ』を参照してください。
さまざまな言語でのテキスト表示
表示可能な値は、ルート (myLibrary など) の名前を持つプロパティー・ファイルから指定し、人間の言語を識別するコードであるロケール をインクルードします。例えば、en は、英語を表すロケールであり、ファイル名 myLibrary-en は英語テキストを指定するプロパティー・ファイルを参照します。
各ファイル名には、ルート名および拡張子 .properties があります。
ロケールは、ルート名の末尾 (拡張子の前) に示されます。
ロケールは 1 から 3 個の ID で構成されます。1 つ目の ID には前にハイフンが付加され、その他の ID (ある場合) には下線が付加されます。
最初の ID に続く追加の各 ID により、言語をさらに具体的に特定でき、具体的には、言語の方言、種類、または地理的位置を指定できます。
ID は、言語コード・国別コード、およびバリアント・コードです。
- 言語コードのうち、en は英語、es はスペイン語を表します。
言語コードは、通常、国際標準化機構 (ISO) 規格 ISO-639 から取得されます。
- 国別コードは、言語の方言が話される国を示します。
例えば、国別コード US はアメリカ合衆国 (米国) を表し、GB はグレートブリテン島 (英国) を表します。
この方法では、米国英語のプロパティー・ファイルは myLibrary-en_US.properties、英国英語のプロパティー・ファイルは myLibrary-en_GB.properties のような名前になります。
国別コードは、通常、ISO 規格 ISO-3166 から取得されます。
- バリアント・コードは、プロパティー・ファイル内の言語の方言または種類をさらに具体的に定義します。
例えば、バリアント・コード A および B を使用して、ノルウェーで話される 2 種類のノルウェー語を区別できます。
これら 2 つのファイルは、myLibrary-no_NO_A.properties および myLibrary-no_NO_B.properties のような名前になります。
また、ノルウェー語の標準タイプをロケール no_NO として定義し、バリアントを no_NO_B として定義できます。バリアント・コードはベンダーまたはブラウザーに固有です。
HTML ファイルおよび関連プロパティー・ファイルのデプロイ
特定の Rich UI アプリケーションに対して複数の HTML ファイルをデプロイできます (サポートする各言語に対して 1 つ)。ユーザーは、名前で HTML ファイルを呼び出すことで (指定するハイパーテキスト・リンクをクリックするなど)、特定のロケールの HTML ファイルを要求できます。例えば、www.example.com の MyApplication.html のドイツ語バージョンを呼び出す HTML を以下に示します (ドイツ語バージョンがデプロイされている場合)。
<a href="www.example.com/MyApplication-de.html">German version</a>
プロパティー・ファイルを、プロジェクトの WebContent/properties フォルダーに保存します。プロパティー・ファイル名のルート (myLibrary など) は、Rich UI プロパティー・ライブラリー内の propertiesFile プロパティーで指定された名前である必要があります。
EGL デプロイヤーにより、アプリケーションで参照される各 Rich UI プロパティー・ライブラリーに対するプロパティー・ファイルを HTML ファイルで識別することが確認されます。以下の規則は、特定の言語に対するファイル名を判別する方法を示しています。
- 使用可能なファイルの名前がロケールに正確に一致している場合、そのファイルの名前が参照されます。
- それ以外の場合、EGL デプロイヤーは一致する可能性が最も高い名前を持つファイルを参照します。例えば、必要なロケールが no_NO_B であるがノルウェー語について唯一の使用可能ファイルの名前が myLibrary-no_NO.properties である場合、その使用可能ファイルの名前が参照されます。さらに、使用可能なノルウェー言語のプロパティー・ファイルがない場合、デフォルトのプロパティー・ファイルの名前が参照されます。デフォルトのファイル名にロケールはありません (myLibrary.properties など)。
特定の Rich UI プロパティー・ライブラリーに対して使用可能なプロパティー・ファイルがない場合、デプロイメントは失敗します。この失敗を回避するために、各ライブラリーについてデフォルトのプロパティー・ファイルを含めることができます。
EGL デプロイメント記述子エディターでの作業
EGL デプロイメント記述子エディターの「Rich UI デプロイメント」タブで作業することにより、アプリケーション・サーバーにインストールする Rich UI アプリケーションを準備できます。そのタブで指定されているロケールは Rich UI 設定から派生し、そこでエントリーを追加または除去できます。
- Rich UI で一般に使用可能なロケールのエントリー (例えば、米国英語に対する en_US) を追加または除去できます。デプロイメント記述子でそのようなロケールを選択するときは、必ず以下のアプリケーション・コンポーネントをデプロイされる出力に組み込んでください。
- 指定するロケール固有のプロパティー・ファイル (該当する場合)
- ロケール固有のランタイム・メッセージ。これらは、EGL ランタイム・コードによって自動的に処理される状況に応じて表示されるシステム・メッセージです。
- 新規ロケールを表すエントリーを追加または除去できます。それぞれの新規ロケールは、1 つの目的 (指定するロケール固有のプロパティー・ファイルを組み込む目的) のみで使用可能です。
ただし、ロケールを定義する場合、Rich UI で一般に使用可能なロケールを指定する必要もあります。その一般に使用可能なロケールは、1 つの目的 (指定されたロケールに対する EGL システム・メッセージを実行時に確実に使用できるようにする) のみで使用されます。