Java™ ランタイムにエラーが発生すると、デフォルトで EGL システム・メッセージが
表示されます。これらのシステム・メッセージごとに、またはサブセットに対して、
カスタマイズされたメッセージを指定することができます。
カスタマイズしたメッセージは、vgj.messages.file Java ランタイム・プロパティーで識別するプロパティー・ファイルに保存されます。このプロパティーは、userMessageFile ビルド記述子オプションで設定します。Javaプロパティー・ファイルの形式について詳しくは、プログラム・プロパティー・ファイルを参照してください。
メッセージが必要な場合、EGL はまず、vgj.messages.file で指定
したプロパティー・ファイルを検索します。EGL は、必要なメッセージのメッセージ ID と、プロパティー・ファイルのメッセージの ID とを比較します。
一致する ID を持つメッセージを、EGL がプロパティー・ファイルで見つけた場合は、そのメッセージを使用します。
一致する ID を持つメッセージがプロパティー・ファイルにない場合、EGL はデフォルトのシステム・メッセージを使用します。
sysLib.getMessage システム関数を使用して、vgj.messages.file で
指定されたプロパティー・ファイルからメッセージを戻すこともできます。
多くの場合、システム・メッセージには、EGL が実行時に検索するメッセージ挿入用のプレースホルダーが含まれています。
例えば、ご使用のコードがシステム関数に無効な日付マスクを提示する場合、メッセージには 2 つのプレースホルダーがあります。
1 つは日付マスク自体のためのプレースホルダー 0 であり、もう 1 つは、システム関数の名前用のプレースホルダー 1 です。
プロパティー・ファイル形式では、デフォルト・メッセージのエントリーは次のとおりです。
EGL0049E = {0} の {1} への割り当てでのオーバーフローです。
メッセージの語句を変更して、すべてまたは一部のプレースホルダーを任意の順序で組み込むことができますが、プレースホルダーの追加または番号付けの変更は行うことができません。
有効な例は、次のとおりです。
EGL0049E = {0} を {1} に割り当てようとしましたが、失敗しました。
EGL0049E = {1} = {0} : 割り当てでのオーバーフローです。
vgj.messages.file プロパティーで識別されるファイルを開くことができない場合は、プログラムが終了します。
COBOL 用に生成されるシステム・メッセージの場合、最初のプレースホルダーは {0} ではなく {1} であることに注意してください。
その他の詳細情報は、Java 言語資料で入手できます。
- メッセージの処理方法、および有効なコンテンツに関する詳細については
、Java クラス java.text.MessageFormat の
資料を参照してください。
- (常にプロパティー・ファイルで使用される) ISO 8859-1 文字エンコードで直接表すことができない文字の処理に関する詳細については
、Java クラス java.util.Properties の
資料を参照してください。
カスタマイズされたメッセージ・ファイルの作成
Java ランタイムでエラーが発生
したときに表示される、カスタマイズされたメッセージが含まれるプロパティー・ファイルを作成することができます。これらのメッセージによって、デフォルトのシステム・メッセージが置き換えられます。
- カスタマイズされたメッセージ用のプロパティー・ファイルを作成するには、以下を実行します。
- 「プロジェクト・エクスプローラー」ビューで、EGL プロジェクトの「Java リソース」フォルダーを右クリックする。
- とクリックする。
- 「新規」ウィンドウで、「一般」を展開し、「ファイル」をクリックします。
- 「次へ」をクリックします。
- 「親フォルダーを入力または選択」フィールドで、
プロジェクトの Java リソース・フォルダーが選択されていることを確認します。
- 「ファイル名」フィールドで、末尾が .properties のプロパティー・ファイルの
名前を入力する。
有効なファイル名は、例えば messages.properties です。
- 「終了」をクリックします。新規ファイルが作成されてエディターで開きます。
- カスタマイズされたメッセージをメッセージ・ファイルに追加するには、以下を実行します。
- 置き換えたいシステム・メッセージのメッセージ ID を検索する。
新規メッセージを追加する場合は、新規メッセージ ID を作成する。
文書には、
システム・メッセージ、そのメッセージ ID、およびメッセージのすべてのプレースホルダーに関する情報が含まれています。
../../com.ibm.egl.messages.doc/topics/rjavrun0001.htmlを参照してください。
- メッセージ・ファイルに、以下の形式で 1 行追加する。
messageID = customMessage
- messageID
- システム・メッセージの ID。
- customMessage
- メッセージ内のプレースホルダーを含む、システム・メッセージの代わりに表示するカスタム・メッセージ。
例えば、以下のプロパティー・ファイルの行は、
システム・メッセージ ID EGL0049E (デフォルトでは、「{{0} の {1} への割り当てでのオーバーフローです。」) を置き換えます。
EGL0049E = {0} を {1} に割り当てようとしましたが、失敗しました。
この例で、コード・ストリング {0} および {1} は、EGL が実行時に
取得する、メッセージ挿入のためのプレースホルダーです。
これらのプレースホルダーの指定は、カスタマイズされたメッセージではオプションです。
- メッセージの追加を完了したら、保存してメッセージ・ファイルを閉じる。
- genProperties ビルド記述子オプションを、GLOBAL または PROGRAM に設定します。
- 以下のいずれかの方法を使用して、メッセージ・ファイルを指定します。
- メッセージを別の言語にローカライズしたい場合は、その言語に合わせて追加のプロパティー・ファイルを作成します。
- 提供したい言語ごとに新規プロパティー・ファイルを作成し、言語を表すロケール接尾部を新規ファイルに追加します。例えば、
元のプロパティー・ファイルの名前が messages.properties である場合、ドイツ語のメッセージを持つファイルの名前は messages_de.properties となります。
ロケールについて詳しくは
、リソース・バンドルのロケールを参照してください。
- 新規ファイルごとに、最初のプロパティー・ファイルで使用したメッセージ ID を
繰り返し使用します。
- 新規ファイルで、メッセージ ID を変更せずに、メッセージのテキストを
翻訳します。
- 指定した言語を使用するように、アプリケーションを設定します。targetNLS ビルド記述子オプションを言語名に設定して
生成するか、もしくは sysLib.setLocale() システム関数を使用して言語を設定するか、いずれかを行ってください。
- プロジェクト内の EGL ファイルをすべて生成します。