ヘッダーをスキップ

Oracle E-Business Suite開発者ガイド
リリース12.2
E53035-01
目次へ
目次
前のページへ
前へ
次のページへ
次へ

メッセージ・ディクショナリ

メッセージ・ディクショナリの概要

メッセージ・ディクショナリを使用すると、メッセージをフォームおよびプログラムにハードコードせずにカタログ化して、アプリケーションから表示できます。メッセージ・ディクショナリを使用してできることは次のとおりです。

主要機能

変更可能なメッセージ・テキスト

メッセージ・ディクショナリによって、メッセージの変更が容易になります。すべてのメッセージ・テキストを1つのシンプルなフォームから使用でき、メッセージ・テキストを変更した場合もフォームを再生成したりプログラムを再コンパイルする必要がありません。

メッセージ・ディクショナリは、選択した書式でアプリケーション・メッセージを表示します。たとえば、メッセージをダイアログ・ボックスやメッセージ行に表示できます。また、直観的な処置がある警告や、処置が必要ない警告などでは、コードなしのメッセージを表示することもできます。

翻訳が容易

メッセージ・ディクショナリにより、メッセージを容易に変更でき、各メッセージのメッセージ・ノートを定義できるため、メッセージの翻訳が簡単にできます。メッセージ・テキストの翻訳後にフォームを再生成したりプログラムを再コンパイルする必要はなく、メッセージ・ディクショナリによって時間を節約できます。

標準メッセージ

メッセージ・ディクショナリを使用すると、アプリケーションで使用する標準メッセージを作成できます。すべてのメッセージをメッセージ・ディクショナリのエントリとして格納しておくことにより、標準メッセージの冗長なプログラミング作業を軽減できます。メッセージをメッセージ・ディクショナリに定義しておくと、自分で定義した簡単なメッセージ名を使用して、フォーム、コンカレント・プログラムその他のアプリケーション・モジュールでメッセージを参照できます。アプリケーションのどこからでも同じメッセージを何度でもコールできます。メッセージを変更する必要がある場合は、1箇所変更するだけで済みます。

動的メッセージ・テキスト

メッセージ・ディクショナリでは、Oracle Application Object Libraryが実行時に導出した情報をメッセージに含めることができます。フィールド値またはモジュール名などの可変テキストを受け入れるようにメッセージを定義できます。フォームまたはその他のアプリケーション・モジュールからメッセージ・ディクショナリをコールするときに、可変メッセージ部分の値を指定します。メッセージ・ディクショナリはこれらの値を挿入した後で、メッセージを戻します。フォームからのメッセージ・コールには、フィールドの値をユーザーへのメッセージ内で表示しながら、フィールド参照も含めることができます。

定義

メッセージ名

アプリケーション内のメッセージについての更新不能な内部識別子。メッセージ名は30文字以内のテキストです。メッセージ名は、アプリケーション名や言語名とともに、メッセージ・テキストを一意に識別します。メッセージ名は、フォームまたはプログラム・モジュールからメッセージ・ディクショナリをコールするときに指定します。

メッセージ

アプリケーションが表示するテキストまたは出力ファイルに出力するテキスト。メッセージは約1800文字以内で定義できます(ドイツ語など翻訳によって文字数が多くなる場合を考慮し、英語では約1260字以内にします)。

メッセージ番号

メッセージとともに表示される番号。メッセージにゼロ以外のメッセージ番号を定義した場合、メッセージ・ディクショナリは自動的にAPP-という接頭辞(英語以外の言語ではそれに相当する語)をメッセージに付加します。

変数トークン

メッセージの定義時に値を表すために作成するキーワード。フォームまたはプログラム・モジュールからメッセージ・ディクショナリをコールするときに、同じ変数トークンをその現行の値とともに指定します。メッセージ・ディクショナリは、メッセージ内の各変数トークンを、指定した現行の値に置き換えた後でメッセージを表示します。

メッセージ・ディクショナリの実装

アプリケーションにメッセージ・ディクショナリを実装する手順は次のとおりです。

  1. メッセージ・ディレクトリの作成

  2. メッセージの定義

  3. メッセージ・ファイルの作成

  4. メッセージ設定のロジックのコーディング

  5. メッセージ表示のロジックのコーディング

メッセージ・ディレクトリの作成

ほとんどのオペレーティング・システムでは、アプリケーションのメッセージ・ディクショナリ・ファイルを入れておくための専用サブディレクトリを作成します。メッセージを定義する前にメッセージ・ディレクトリ(使用するオペレーティング・システムにディレクトリというものがない場合は、メッセージを格納しておける場所)を作成しておく必要がありますが、これはOracle Application Object Libraryがメッセージ・ファイルを格納する場所になるからです。一般に、サブディレクトリにはmesgという名前を付け、アプリケーションのベース・ディレクトリの直下に作成します(メッセージ・ディクショナリ・ファイルの場所を作成する方法の詳細は、使用しているオペレーティング・システムによって異なります)。アプリケーション用のディレクトリ構造を持つマシンごとに、アプリケーションのmesgディレクトリが必要です(コンカレント処理サーバー、フォーム・サーバーのマシン)。

関連項目: アプリケーション・フレームワークの設定

メッセージの定義

「メッセージ」ウィンドウを使用して、メッセージ情報を定義します。メッセージを定義する際、メッセージ・テキスト内に変数トークンを含めることができます。値はメッセージが表示されるときにメッセージ・ディクショナリによって自動的に挿入されます。

メッセージはいつでも、「メッセージ」ウィンドウを使用して変更できます。メッセージ・テキストを変更する場合は、1回変更すればアプリケーションでコールするたびに同じ操作を行う必要はありません。また、メッセージを変更する際にフォームを再生成したり、プログラムを再コンパイルする必要もありません。

関連項目: メッセージ標準および「メッセージ」ウィンドウ

メッセージ・ファイルの作成

「メッセージの生成」コンカレント・プログラムを使用して、US.msbなどのランタイム・メッセージ・ファイルを生成します。

このプログラムを使用してメッセージ・ファイルを生成する手順は次のとおりです。

  1. 「アプリケーション開発者」の職責を使用して、「要求の発行」ウィンドウに移動します。

  2. 「名称」フィールドで「メッセージの生成」コンカレント・プログラムを選択します。

  3. パラメータ・ウィンドウで、生成する言語ファイルの言語コードを選択します(たとえば、アメリカ英語の場合はUS)。

  4. 作成するメッセージ・ファイルに、該当するアプリケーション名を付けます。各アプリケーションには固有のメッセージ・ファイルが必要です。

  5. プログラムのモードを選択します。ランタイム・メッセージ・ファイルを生成するには、DB_TO_RUNTIMEを選択します。

    編集したり元のデータベースや別のデータベースにロードできる、判読可能なテキスト・ファイルを生成するには、構成ファイルFNDMDMSG.lctとともにFNDLOADユーティリティを使用します。

    詳細は、『Oracle E-Business Suiteセットアップ・ガイド』を参照してください。

  6. 「ファイル名」パラメータは空白にしておきます。これは、メッセージ・ジェネレータがUS.msbなどの標準名で、サーバー側のアプリケーション用mesgディレクトリ(または使用しているプラットフォームでそれに相当する場所)にファイルを作成するためです。

  7. 結果ファイル(サーバー側)のコピーを作成し、必要に応じて他のマシン(コンカレント処理サーバー、フォーム・サーバーのマシン)上にあるアプリケーションの該当mesgディレクトリにコピーを送信します。それぞれの場所で、ファイル名は同一とします(US.msbなど)。

コマンドライン・インタフェース

UNIXシステムでは、次のようなコマンドライン・インタフェースを使用して、US.msbなどのメッセージ・ファイルを生成することもできます。

FNDMDGEN <Oracle ID> 0 Y <language codename> <application shortname> DB_TO_RUNTIME

Oracle IDはAPPSスキーマのユーザー名とパスワードであり、言語コード名はUSなどの言語コードです。

編集したり元のデータベースや別のデータベースにロードできる、判読可能なテキスト・ファイルを生成するには、構成ファイルFNDMDMSG.lctとともにFNDLOADユーティリティを使用します。

メッセージ設定のロジックのコーディング

メッセージを生成してユーザーに表示するプロセスは、2つの段階から構成されます。まず、メッセージを(クライアント側に)設定するかサーバー側から取得し、その後ユーザーに対して表示します(またはコンカレント・プログラム用のファイルに書き込みます)。この項では、このプロセスの設定部分について説明します。

アプリケーションからメッセージ・ディクショナリをコールすると、メッセージ・ディクショナリはアプリケーションおよび指定したメッセージ名と関連付けられたメッセージを検索し、変数トークンがあればそれを代入テキストに置き換えます。コンカレント処理でメッセージを生成する場合、コールするルーチンに応じて、メッセージ・ディクショナリはメッセージをコンカレント・プログラムのログまたはアウト・ファイルに書き込むか、あるいはプログラムがログまたはアウト・ファイルに書き込めるようにコンカレント・プログラムへメッセージを戻します。メッセージ・ディクショナリは、任意のフォームやC言語によるコンカレント・プログラムからコールできます。

メッセージを取得および設定するためのクライアント側API

FND_MESSAGEパッケージ内の次のルーチンがクライアント側(つまりOracle Forms)のPL/SQLプロシージャで使用され、その後に表示するメッセージを取得し設定します。

変数 説明
SET_NAME メッセージ・ディクショナリからメッセージを取り出し、メッセージ・スタックにセットします。
SET_STRING 入力文字列をメッセージ・スタックにセットします。
SET_TOKEN メッセージ・トークンに、指定した値を代入します。
RETRIEVE サーバー側のメッセージ・バッファからメッセージを取り出し、トークンを翻訳および代入して、メッセージ・スタックにメッセージをセットします。
GET (ファンクション) メッセージ・スタックからメッセージを取り出して、VARCHAR2を戻します。
CLEAR メッセージ・スタックを消去します。

メッセージ用のサーバー側API

メッセージ(および必要であればトークンと値のペア)をバッファしておいて、クライアント側のPL/SQLプロシージャ(つまり、Oracle Formsからコールするプロシージャ)がそれを取り出して表示できるようにするには、次のサーバー側ルーチンを使用します。サーバー側では、メッセージを1つしかバッファできません。

変数 説明
SET_NAME メッセージ・ディクショナリから実際にメッセージを取り出さずに、グローバル領域にメッセージ名を設定します。
SET_TOKEN 実際に代入を行わずに、トークンと値のペアをグローバル領域に追加します。
CLEAR メッセージ・スタックを消去します。

メッセージ表示のロジックのコーディング

一度メッセージを設定または取得して、任意のトークンを代入すれば、(フォームのサーバー側、つまりフォームの)ユーザーに対してそのメッセージを表示したり、(コンカレント・プログラムのデータベース・サーバー側の)ファイルにメッセージを書き込むことができます。

メッセージを表示するForms Server側API

次のルーチンをフォームおよびライブラリのPL/SQLプロシージャで使用することにより、メッセージを表示します。これらの各ルーチンは、プログラム内のFND_MESSAGE.SET_NAMEまたはFND_MESSAGE.RETRIEVEコールによって、メッセージ・スタックに入れられたメッセージを表示します。

FND_MESSAGE.ERROR、FND_MESSAGE.SHOW、FND_MESSAGE.WARNおよびFND_MESSAGE.QUESTIONの各ルーチンは、(クライアント側の)フォーム・モーダル・ウィンドウにメッセージを表示します。これらのルーチンの主な相違点は、フォーム・モーダル・ウィンドウでメッセージの隣に表示されるアイコンです。各ルーチンのアイコンは、固有の意味を持つように設定されています。表示するメッセージのタイプに基づいて、使用するルーチンを選択する必要があります。たとえば、エラー・メッセージの表示にはFND_MESSAGE.ERRORルーチンを、情報メッセージの表示にはFND_MESSAGE.SHOWルーチンを使用する必要などがあります。

FND_MESSAGE.ERROR、FND_MESSAGE.SHOW、FND_MESSAGE.WARNおよびFND_MESSAGE.QUESTIONルーチンが表示するアイコンの外観は、プラットフォームに依存する点に注意してください。

変数 説明
ERROR フォーム・モーダル・ウィンドウまたはコンカレント・プログラムのログ・ファイルにエラー・メッセージを表示します。(例: 「無効な値が入力されました。」)
SHOW フォーム・モーダル・ウィンドウまたはコンカレント・プログラムのログ・ファイルに情報メッセージを表示します。(例: 「このファンクションを実行するには、次の...を入力してください。」)
WARN フォーム・モーダル・ウィンドウに警告メッセージを表示し、ユーザーはこれを受け入れるか現行の操作を取り消すかを選択します。(例: 「現行の操作を続行しますか?」)
QUESTION フォーム・モーダル・ウィンドウにメッセージと3個以下のボタンを表示します。(例: 「次の処理から1つを選択してください。」)
HINT フォームのステータス行にメッセージを表示します。
ERASE フォームのステータス行を消去します。

データベース・サーバー側メッセージの方法

データベース・サーバー側のPL/SQLそのものには、現在I/O機能がありません。したがって、メッセージを出力するサーバー側ルーチンをコールした環境に依存します。

サーバーに設定されたメッセージを表示するには、個別で交換不能な3つの方法があります。

方法1: サーバー・プロシージャをコールしたフォーム・クライアントによって表示されるエラー・メッセージをサーバーにセットします。

サーバー側で、FND_MESSAGE.SET_NAMEおよびFND_MESSAGE.SET_TOKENを使用してメッセージをセットします。次にAPP_EXCEPTION.RAISE_EXCEPTION (APPCOREルーチン)をコールしてアプリケーション・エラーのPL/SQL例外を呼び出します。この例外は、サーバー・プロシージャが終了し、クライアント側の標準Oracle Forms ON_ERRORトリガーで制御が再開したときにトラップされます。ON-ERRORトリガーはサーバーからメッセージを取得して表示します。

重要: Oracle E-Business Suiteに統合するために作成されたすべてのフォームには、APP_STANDARD.EVENT('ON-ERROR')をコールするフォーム・レベルのON-ERRORトリガーが必ずあります。ON-ERRORトリガーのAPP_STANDARD.EVENT('ON-ERROR')はサーバーで呼び出したアプリケーション・エラーを自動検出し、そのエラー・メッセージを取得してフォームの警告ボックスに表示します。

方法2: クライアント側で取り出すメッセージをサーバー側でセットします。

サーバー側で、FND_MESSAGE.SET_NAMEおよびFND_MESSAGE.SET_TOKENを使用してメッセージをセットします。結果コードをコール側クライアント・コードに戻して、そのメッセージが待機中であることを示します。待機中のメッセージがある場合、クライアントはFND_MESSAGE.RETRIEVEをコールして、メッセージをサーバーからクライアントへプルし、メッセージをクライアントのメッセージ・スタックに入れます。クライアントはFND_MESSAGE.ERROR、FND_MESSAGE.SHOW、FND_MESSAGE.HINTまたはFND_MESSAGE.WARNをコールして、メッセージを表示するか、FND_MESSAGE.GETをコールしてメッセージを取り出してバッファに入れます。

方法3: メッセージを取得してサーバーのバッファに入れます。

FND_MESSAGE.SET_NAME、FND_MESSAGE.SET_TOKENおよびFND_MESSAGE.GETルーチンを使用して、メッセージを取得しバッファに入れます。または、FND_MESSAGE.GET_STRINGを使用してシングル・メッセージを取り出して文字列に入れます。

コンカレント・プログラムからメッセージ・ディクショナリをコールする

コンカレント・プログラムからメッセージ・ディクショナリ・ルーチンをコールする場合、次の表に示すように、メッセージの処理は使用するルーチンに応じて異なります。

ルーチン 出力先 メッセージ番号 表示されるメッセージ
SHOW 出力ファイル 印刷されない 1個、スタックの先頭
ERROR ログ・ファイル ゼロ以外の場合は印刷 1個、スタックの先頭

PL/SQLプロシージャのメッセージ・ディクショナリAPI

この項では、PL/SQLプロシージャで使用できるメッセージ・ディクショナリAPIについて説明します。また、これらのメッセージ・ディクショナリAPIを使用したPL/SQLプロシージャ・コードの例もいくつか示します。

これらのPL/SQLプロシージャの一部には、C言語で書かれたコンカレント・プログラムで使用できる、同等のCコードがあります。CコードAPIの構文がPL/SQL APIルーチンの記述の最後に含まれています。メッセージ・ディクショナリのCルーチンはすべて、fddutl.h ヘッダー・ファイルを使用する必要があります。

FND_MESSAGE.CLEAR

変数 説明
要約 procedure FND_MESSAGE.CLEAR;
場所 FNDSQFライブラリおよびデータベース(ストアド・プロシージャ)
説明 すべてのメッセージのメッセージ・スタックを消去します。

FND_MESSAGE.DEBUG

変数 説明
要約
 procedure FND_MESSAGE.DEBUG      
(value    IN varchar2);   
場所 FNDSQFライブラリ
説明 文字列を即時表示します。このプロシージャは通常、エンド・ユーザーに対して表示されるメッセージではなく、デバッグ・メッセージのみを表示するのに使用します。この文字列は、「メッセージ」ウィンドウで定義する必要がありません。この文字列はフォームにハードコードされるので、メッセージ・ディクショナリで定義されるメッセージのように翻訳されることはありません。
表示する文字列。

例を次に示します。

 /* as the last part of an item handler */
ELSE 
fnd_message.debug('Invalid event passed to
ORDER.ITEM_NAME: ' || EVENT); 
END IF;

FND_MESSAGE.ERASE

変数 説明
要約 procedure FND_MESSAGE.ERASE;
場所 FNDSQFライブラリ
説明 Oracle Formsのステータス行を消去します。

ヒント: Oracle Formsがステータス行へのI/Oを処理する方法が原因で、HINTまたはERASEを使用してステータス行に対して行った変更が即時表示されないことがあります。これは、ユーザー入力に関係のない一部のPL/SQLルーチンの最中にコールを行った場合に起こります。このようなときは、フォームの同期化ビルトインを使用して、強制的にメッセージをステータス行に表示する必要があります。

FND_MESSAGE.ERROR

変数 説明
要約 procedure FND_MESSAGE.ERROR;
場所 FNDSQFライブラリ
説明 Oracle Formsモーダル・ウィンドウまたはコンカレント・プログラムのログ・ファイルにエラー・メッセージを表示します。(例: 「無効な値が入力されました。」)
FND_MESSAGE.ERRORはメッセージをスタックから取り出して表示した後、すべてのメッセージをメッセージ・スタックから消去します。

例を次に示します。

/* Display an error message with a translated token */
FND_MESSAGE.SET_NAME ('FND', 'FLEX_COMPILE_ERROR');
FND_MESSAGE.SET_TOKEN ('PROCEDURE', 'TRANS_PROC_NAME', TRUE);
FND_MESSAGE.ERROR;
/* Then either raise FORM_TRIGGER_FAILURE, or exit  
routine*/   
変数 説明
CコードAPI
boolean afderror(/*_ void _*/);
fddutl.hヘッダー・ファイルが必要。

FND_MESSAGE.GET

変数 説明
要約
function FND_MESSAGE.GET 
return varchar2;
場所 FNDSQFライブラリおよびデータベース(ストアド・ファンクション)
説明 翻訳済でトークンも代入されているメッセージをメッセージ・スタックから取り出した後、メッセージ・スタックからそのメッセージを消去します。これはフォームのビルトインまたはその他のファンクションのために翻訳済メッセージを取得するときに使用できます。FND_MESSAGE.SET_NAMEをコール済で、必要であればFND_MESSAGE.SET_TOKENもコールしたとします。そうすると、GETは最大2000バイトのメッセージを戻します。
このファンクションをデータベース・サーバー側のストアド・プロシージャからコールした場合、メッセージはメッセージ・ディクショナリ表から取得されます。ファンクションをフォームまたはフォーム・ライブラリからコールした場合、メッセージはフォーム・サーバーのメッセージ・ファイルから取得されます。
データベース・サーバー側のストアド・プロシージャからフォームにメッセージを取り出す場合は、ストアド・プロシージャのFND_MESSAGE.SET_NAME (必要であればFND_MESSAGE.SET_TOKENも)を使用する必要があります。フォームは前述の方法1または方法2を使用して、ストアド・プロシージャからメッセージを取得します。この場合、ストアド・プロシージャでFND_MESSAGE.GETを使用しないでください。

/* Get translated string from message file */
declare 
msg varchar2(2000);
begin
FND_MESSAGE.SET_NAME ('FND', 'A_2000_BYTE_MSG');
msg := FND_MESSAGE.GET;
end; 
/*  We now have a translated value in the msg variable
for forms built-in or other function */      
変数 説明
CコードAPI この関数にバッファを渡してそのサイズを知らせます。バッファのサイズは最大で2001バイトまで(NULL終了文字を含む)です。
boolean afdget(/*_text *msg_buf, size_t buf_size _*/);

fddutl.hヘッダー・ファイルが必要。

FND_MESSAGE.HINT

変数 説明
要約
procedure FND_MESSAGE.HINT;
場所 FNDSQFライブラリ
説明 Oracle Formsのステータス行にメッセージを表示します。FND_MESSAGE.HINTはメッセージをスタックから取り出して表示した後、そのメッセージをメッセージ・スタックから消去します。
この場合でもユーザーは、別のメッセージがメッセージ行の直後にないかを確認する必要があります。

FND_MESSAGE.QUESTION

変数 説明
要約
 (button1	IN varchar2 default 'YES',
  button2 IN varchar2 default 'NO', 
  button3 IN varchar2 default 'CANCEL',
  default_btn IN number   default  1,
  cancel_btn  IN number   default  3, 
  icon        IN varchar2 default 'question'
 ) return number; 
場所 FNDSQFライブラリ
説明 Oracle Formsモーダル・ウィンドウにメッセージと3個以下のボタンを表示します。(例: 「次の処理から1つを選択してください。」)
FND_MESSAGE.QUESTIONはメッセージをスタックから取り出し、そのメッセージを消去します。ユーザーがボタンを選択した後、FND_MESSAGE.QUESTIONは選択したボタンの数を戻します。
各ボタンについてメッセージを定義するか、または、そのボタンのテキストを含む(Oracle Application Object Libraryアプリケーション下)メッセージ・ディクショナリ内にある既存のメッセージを使用する必要があります。このルーチンはボタン名のメッセージをOracle Application Object Libraryメッセージから探すため、独自のメッセージを定義した場合はそれを自分のアプリケーションではなくOracle Application Object Library (「FND」アプリケーション)と関連付ける必要があります。
ボタンに定義済のメッセージがない場合は、そのボタンのテキストがメッセージ名のデフォルトとして使用されます。メッセージが定義されていない箇所を特定しやすいように、メッセージ名はすべて大文字のみで指定してください(メッセージがない場合、ボタンのテキストは翻訳されません)。
引数(入力) button1 - デフォルト・ボタンの右側にあるボタンのテキストを識別するメッセージ名を指定します。標準に従って、このボタンは「取消」ボタンとして機能します。この名前は、「メッセージ」フォームを使用してボタン・テキストを定義するときに使用するメッセージ名と同一です。
button2 - その他のボタン(つまり、デフォルト・ボタンや「取消」ボタン以外)のテキストを識別するメッセージ名を指定します。この名前は、「メッセージ」フォームを使用してボタン・テキストを定義するときに使用するメッセージ名と同一です。
button3 - デフォルト・ボタン、つまり最も左側のボタンのテキストを識別するメッセージ名を指定します。この名前は、「メッセージ」フォームを使用してボタン・テキストを定義するときに使用するメッセージ名と同一です。
default_btn - ユーザーが「デフォルト」のキーボード・アクセラレータ(通常は[Return]キーまたは[Enter]キー)を押したときに押されるボタンの番号を指定します。NULLを渡すと、button1がデフォルトになります。
cancel_btn - ユーザーが「取消」のキーボード・アクセラレータ(通常は[Esc]キー)を押したときに押されるボタンの番号を指定します。NULLを渡すと、「取消」キーボード・ボタンによって押されるボタンがなくなります。
icon - 判断ポイント・ボックスに表示するアイコンを指定します。アイコンを指定しない場合は、標準のFND_MESSAGE.QUESTIONアイコンが表示されます。使用できる標準アイコンには、STOP、CAUTION、QUESTION、NOTEおよびFILEがあります。さらに、使用しているプラットフォームのAU_TOP/resourceディレクトリで任意のアイコンを使用できます。

ボタンの配置およびレンダリングの詳細は、Oracle E-Business Suiteフォーム・ベース製品のユーザー・インタフェース標準を参照してください。

重要: ボタンを指定しない場合は、「Yes」「No」「取消」の3つのボタンが表示されます。ボタンを1つ指定すると、そのボタンが第1のボタンとして表示され、第2のボタンが「取消」とデフォルト設定されます。Button1がウィンドウの右下、Button2がButton1の左、Button3がButton2の左に表示されます。

button3		button2		button1

2つのボタンを取消ボタンなしで指定するには、'<FIRST_OPTION>'、'<SECOND_OPTION>'およびNULLの引数で渡します。

例1

/* Display a message with two buttons in a modal window */
FND_MESSAGE.SET_NAME('INV', 'MY_PRINT_MESSAGE');
FND_MESSAGE.SET_TOKEN('PRINTER', 'hqunx138');
FND_MESSAGE.QUESTION('PRINT-BUTTON');
  /* If 'PRINT-BUTTON' is defined with the value “Print",
     the user sees two buttons: “Print", and “Cancel".  */  
       

例2

/* Display a message with three buttons in a modal window.
   Use the Caution icon for the window. */

FND_MESSAGE.SET_NAME('FND', 'DELETE_EVERYTHING');
FND_MESSAGE.QUESTION('DELETE', NULL, 'CANCEL', 1, 3, 'caution');

例3

/* Display a message with two buttons in a modal window.
   "Yes" and "No" */

FND_MESSAGE.SET_NAME('FND', 'REALLY');
FND_MESSAGE.QUESTION('YES', 'NO', NULL);

FND_MESSAGE.RETRIEVE

変数 説明
要約 procedure FND_MESSAGE.RETRIEVE;
場所 FNDSQFライブラリ
説明 データベース・サーバーからメッセージを取り出し、トークンを翻訳および代入して、メッセージ・スタックにメッセージをセットします。

/* Retrieve an expected message from the server side,
   then show it to the user */
FND_MESSAGE.RETRIEVE;
FND_MESSAGE.ERROR;
  /* Then either raise FORM_TRIGGER_FAILURE, or exit  
     routine*/       

FND_MESSAGE.SET_NAME

変数 説明
要約
 (application    IN varchar2,
          name           IN varchar2); 
場所 FNDSQFライブラリおよびデータベース(ストアド・プロシージャ)
説明(Forms) メッセージ・ディクショナリからメッセージを取り出して、メッセージ・スタックにセットします。クライアント側PL/SQLプロシージャで使用する各メッセージ用に、FND_MESSAGE.SET_NAMEを1回コールします。FND_MESSAGE.SET_TOKENをコールする前に、必ずFND_MESSAGE.SET_NAMEをコールしてください。
説明(Database Server) メッセージ・ディクショナリから実際にメッセージを取り出さずに、グローバル領域にメッセージ名を設定します。
引数(入力) application - このメッセージが関連付けられているアプリケーションの短縮名。この短縮名は、「メッセージ」フォームを使用して定義したときにメッセージと関連付けたアプリケーションを参照します。
name - メッセージを識別するメッセージ名。この名前は、「メッセージ」フォームを使用してメッセージを定義するときに使用する名前と同一です。メッセージ・ディクショナリの名前は、大文字と小文字を区別しません(たとえば、MESSAGE_NAMEはmessage_nameと同じ名前となります)。

例1

/* Display a warning, asking OK/Cancel question */
FND_MESSAGE.SET_NAME ('FND', 'WANT_TO_CONTINUE');
FND_MESSAGE.SET_TOKEN ('PROCEDURE', 'Compiling this flexfield');
if (FND_MESSAGE.WARN) then
  /* User selected OK, so add appropriate logic ... */ 

例2

/* Display a warning, asking OK/Cancel question */
FND_MESSAGE.SET_NAME ('FND', 'WANT_TO_CONTINUE');
FND_MESSAGE.SET_TOKEN ('PROCEDURE', translated_text_vbl);
if (FND_MESSAGE.WARN) then
  /* User selected OK, so add appropriate logic ... */ 

例3

/* Show an informational message */
FND_MESSAGE.SET_NAME ('FND', 'COMPILE_CANCELLED');
FND_MESSAGE.SHOW;                             
                    

例4

/* This code is on the server.  It sets up a message and
   then raises an error so the client will retrieve the
   message and display it to the user */
FND_MESSAGE.SET_NAME ('FND', 'FLEX_COMPILE_ERROR');
FND_MESSAGE.SET_TOKEN ('PROCEDURE', 'My Procedure');
APP_EXCEPTION.RAISE_EXCEPTION;                  
                     

FND_MESSAGE.SET_STRING

変数 説明
要約
 procedure FND_MESSAGE.SET_STRING
(value    IN varchar2);
場所 FNDSQFライブラリ
説明 入力文字列を取り出し、メッセージ・スタックに直接セットします。文字列は「メッセージ」ウィンドウで定義する必要はありません。これらの文字列はフォームにハードコードされるので、メッセージ・ディクショナリで定義されるメッセージのように翻訳されません。
引数(入力) value - メッセージ・スタックに配置するテキストを示します。

例1

/* Set up a specific string (from a variable) and show it */
FND_MESSAGE.SET_STRING (sql_error_message);
FND_MESSAGE.ERROR;                                              

例2

/* Set up a specific string and show it */
FND_MESSAGE.SET_STRING ('Hello World');
FND_MESSAGE.SHOW;                                              

FND_MESSAGE.SET_TOKEN

変数 説明
要約
procedure FND_MESSAGE.SET_TOKEN
         (token          IN varchar2,
          value          IN varchar2,
          translate      IN boolean default FALSE); 
場所 FNDSQFライブラリおよびデータベース(ストアド・ファンクション)
説明(Forms) メッセージ・トークンに、指定した値を代入します。メッセージ内のトークンと値の各ペアについて1回ずつFND_MESSAGE.SET_TOKENをコールします。オプションの翻訳パラメータをTRUEに設定すると、値を代入する前にそれが翻訳対象であることを明示できます。(値それ自体がメッセージ・ディクショナリのメッセージ名である場合は翻訳する必要があります。)
説明(Database Server) 実際に代入を行わずにトークンと値のペアをグローバル領域に追加する点以外は、クライアント側のFND_MESSAGE.SET_TOKENと同じ処理です。
引数(入力) token - 代入するトークンの名前を指定します。このトークン名は、「メッセージ」フォームを使用してメッセージを定義するときに使用するトークン名と同一です。メッセージの定義時に変数トークン名の先頭にアンパサンド(&)を指定していても、その&をメッセージ・ディクショナリのコールには含めないでください。
value - 代入するテキストを示します。コールするメッセージに対して必要な分の代入テキストを含めることができます。実際の代入テキストのかわりにメッセージ名を指定することもできます。この場合、翻訳引数もTRUEに指定する必要があります。メッセージ・ディクショナリのメッセージをこの方法で渡す場合、メッセージ・ディクショナリはFND_MESSAGE.SET_NAMEに先行するコールで指定したアプリケーションの下でメッセージを検索します。
translate - value自体がメッセージ・ディクショナリのメッセージであるかどうかを示します。TRUEの場合、valueは代入前に「翻訳」、すなわち実際のメッセージ・ディクショナリのメッセージ・テキストに置換されます。対照的に、「トークン・メッセージ」がトークンを含んでいても、そのトークンは代入されない点に注意してください(すなわち、「カスケード代入」はできません)。

例1

/* Display a warning, asking OK/Cancel question */
FND_MESSAGE.SET_NAME ('FND', 'WANT_TO_CONTINUE');
FND_MESSAGE.SET_TOKEN ('PROCEDURE', 'Compiling this flexfield');
if (FND_MESSAGE.WARN) then
  /* User selected OK ... */                   
                               

例2

/* Display a warning, asking OK/Cancel question */
FND_MESSAGE.SET_NAME ('FND', 'WANT_TO_CONTINUE');
FND_MESSAGE.SET_TOKEN ('PROCEDURE', translated_text_vbl);
if (FND_MESSAGE.WARN) then
  /* User selected OK ... */                   
                               

例3

/* Display an error message with a translated token */
FND_MESSAGE.SET_NAME ('FND', 'FLEX_COMPILE_ERROR');
FND_MESSAGE.SET_TOKEN ('PROCEDURE', 'TRANS_PROC_NAME', TRUE);
FND_MESSAGE.ERROR;
  /* Then either raise FORM_TRIGGER_FAILURE, or exit  
     routine*/                                                 

CコードAPI

SET_TOKEN(token_name, token_value, FALSE)と同等のCコードを次に示します。

boolean afdtoken(/*_ text *token_name,
                  text *token_value _*/);

SET_TOKEN(token_name, token_value, TRUE)と同等のCコードを次に示します。

boolean afdtrans(/*_ text *token_name,
                 text *token_value _*/);

数値val*に対するSET_TOKEN(token_name, token_value, FALSE)と同等のCコードを次に示します。

boolean afdtkint(/*_ text *token_name, sb4 token_value _*/);

fddutl.hヘッダー・ファイルが必要。

FND_MESSAGE.SHOW

変数 説明
要約
procedure FND_MESSAGE.SHOW;
場所 FNDSQFライブラリ
説明 Oracle Formsモーダル・ウィンドウまたはコンカレント・プログラムのログ・ファイルに情報メッセージを表示します。(例: 「このファンクションを実行するには、次の...を入力してください。」)
FND_MESSAGE.SHOWはメッセージをスタックから取り出して表示した後、表示したメッセージのみをメッセージ・スタックから消去します。

/* Show an informational message */
FND_MESSAGE.SET_NAME ('FND', 'COMPILE_CANCELLED');
FND_MESSAGE.SHOW;   
変数 説明
CコードAPI boolean afdshow(/*_ void _*/);
fddutl.hヘッダー・ファイルが必要。

FND_MESSAGE.WARN

変数 説明
要約
function FND_MESSAGE.WARN          return boolean; 
場所 FNDSQFライブラリ
説明 Oracle Formsモーダル・ウィンドウに警告メッセージを表示し、ユーザーが受け入れるか現行の操作を取り消すかを選択できるようにします。(例: 「現行の操作を続行しますか?」)
ユーザーがメッセージを受け入れる(すなわち「OK」をクリックすると)とFND_MESSAGE.WARNはTRUEを返し、ユーザーが操作を取り消すとFALSEを返します。
FND_MESSAGE.WARNはメッセージをスタックから取り出して表示した後、表示したメッセージをメッセージ・スタックから消去します。

/* Display a warning, asking OK/Cancel question */
FND_MESSAGE.SET_NAME ('FND', 'WANT TO CONTINUE');
FND_MESSAGE.SET_TOKEN ('PROCEDURE', 'Compiling this flexfield');
IF (FND_MESSAGE.WARN) THEN
  /* User selected OK, so add appropriate logic ... */ 
ELSE
  /* User selected Cancel, so add appropriate logic ... */ 
END IF;
変数 説明
CコードAPI boolean afdwarn(/*_ void _*/);
fddutl.hヘッダー・ファイルが必要。

アプリケーション・メッセージ標準

Oracle E-Business Suiteはユーザーとのコミュニケーションにメッセージを使用します。典型的なメッセージとしては、警告、エラー・メッセージ、短い作業指示に加えて、コンカレント要求の進捗状況や、作業完了、その他ユーザーが関心を持つ情報や支援になる情報をユーザーに提供するメッセージなどがあります。フォーム・ベースのアプリケーションではユーザー画面にメッセージを表示し、出力ファイルとログ・ファイルにもメッセージを印刷します。

メッセージは製品の一部であり、フォームのユーザー・インタフェースと同等の配慮と注意を払って取り扱う必要があります。次に示すメッセージ標準は、短く明瞭で必要な情報を含むメッセージを記述するための支援となります。これらの標準に準拠してメッセージ・ディクショナリを使用している場合、理解や、文書化、編集、他言語への翻訳のすべてが容易なメッセージがアプリケーションで提供され、結果的にサポートや拡張が容易なアプリケーションが実現できます。

定義

メッセージ・タイプ

メッセージ・タイプとは、メッセージをエラー、プロンプトなどに分類するものです。一般に、エラー・メッセージは障害に関する情報を表示し、ヒント・メッセージはフォームを正常に使用しているときに表示される、役に立つ情報です。

エラー・メッセージ

エラー・メッセージには、ユーザーが考慮したり確認する必要のある、アプリケーションに関する確かな情報が含まれています。エラー・メッセージは必ずしも動作異常やユーザー側のミスを指摘するものであるとはかぎりません。単なる警告の場合もあります。

最もよくあるのは、ユーザーに対して無効なエントリや操作を知らせたり、正常に動作していない機能について報告するエラー・メッセージです。

メッセージ名

メッセージ名は、アプリケーション内のメッセージの内部識別子です。メッセージ名の長さは最大で30文字まで可能です。

メッセージ名は、アプリケーション名や言語名とともに、メッセージ・テキストを一意に識別します。メッセージ名は、フォームまたはプログラム・モジュールからメッセージ・ディクショナリをコールするときに指定します。

メッセージ接頭辞

メッセージ接頭辞は、メッセージ番号および番号のあるメッセージ用テキストの前に自動付加される短いコードです。標準のメッセージ接頭辞は「APP:<アプリケーション短縮名>」となります。

メッセージ番号

メッセージ番号は、メッセージがユーザーに対して表示されるときにメッセージの前に付けられる番号です。メッセージ番号を翻訳によって変更することはできません。ユーザーはメッセージ番号によって、どのアプリケーションがメッセージを生成したかを判定したり、文書でメッセージを見つけることが容易にできるようになります。

メッセージに対してメッセージ番号を定義する場合、メッセージ・ディクショナリはメッセージの前にOracleメッセージ標準の「APP:<アプリケーション短縮名>-nnnnn」を自動で付加します(ここで、APPはOracle E-Business Suiteの標準のメッセージ接頭辞、nnnnnはメッセージ番号)。メッセージ番号の長さは最大で5桁までです。たとえば、Oracle General Ledgerで「APP:SQLGL-0032 ...を入力してください。」といったメッセージが表示されます。

メッセージの説明

「メッセージ」フォームの「説明」フィールドには、メッセージに関する説明を他の開発者および翻訳者向けに記入します。メッセージの説明では、最大で230文字までのテキストを入力できます。通常このフィールドには、メッセージのコンテキストに関する翻訳者向けの情報を記入します。

変数トークン

変数トークンは代入トークンとも呼ばれ、メッセージ・テキストを定義する際のプレースホルダの役目を果たします。メッセージ・ディクショナリがメッセージを表示するとき、各変数トークンに開発者が指定した値を代入することによって、動的なメッセージが作成されます。

定型挿入文

定型挿入文は、フォームに含まれる任意の固定テキストです。定型挿入文には、フォーム・タイトル、ゾーン・タイトル、領域タイトルおよびフィールド・プロンプトなどがあります。

メッセージ・ネーミング標準

次に提案する標準では、メッセージ名の一貫した命名規則について示します。

各メッセージ名の2番目の単語として、グループ識別子を使用します。

メッセージが問題にしている機能領域または組織的機能を示すグループ識別子を含めます。グループ識別子は、フォーム名に使用したグループ識別子に対応させる必要があります。それによって、メッセージのセットをより小さく管理可能な固まりに分解できます。

変数 説明
正: FND_FLEX_SEGMENT_NOT_REGISTERED [グループ識別子のFLEXはフレックスフィールドを示します]
正: FND_MD_MESSAGE_NOT_FOUND [グループ識別子のMDはメッセージ・ディクショナリを示します]
誤: FND_MESSAGE_NOT_FOUND

メッセージ名のいくつかの例を次に示します。

メッセージ番号付け標準

Oracle E-Business Suite製品のすべてにメッセージ番号の範囲が割り当てられています。番号の範囲と、ゼロ以外の番号を持つメッセージはOracle E-Business Suiteメッセージ・マニュアルに記載されています。ただし番号のないメッセージは含まれていません。

番号を使用するかどうかを判断するためのガイドラインをいくつか示します。

番号が必要なメッセージ

次の質問に対して「Yes」という答えが1つでもあれば、メッセージに番号を付ける必要があると思われます。

番号が不要なメッセージ

次の質問に対して「Yes」という答えが1つでもあれば、メッセージに番号を付ける必要がありません。

カスタム・アプリケーションおよびその他の製品

公開されているメッセージ番号範囲に含まれていないカスタム・アプリケーションやサードパーティ製品については、メッセージ番号0から2999を使用しないことをお薦めします。これらの番号は、フレックスフィールドやコンカレント処理などの製品を横断する機能で表示されるOracle Application Object Libraryメッセージであるため、自身のアプリケーションで表示されることもあるからです。

一般に、Oracle E-Business Suite製品で表示される番号の重複を避けることは、たとえ重複を回避することが技術的要件ではなくても有益なことです。カスタム・メッセージとOracle E-Business Suiteのメッセージを数字の上で離しておくと、障害の原因がOracle E-Business Suite製品なのか、それともカスタム・アプリケーションなのかをユーザーが容易に見極めることができます。また、障害を解消するための支援をどこから受けたらよいのかがわかります。

Oracle E-Business Suite製品が現在使用していたり、近い将来使用する可能性のある番号と重ならないようにするには、400000 (400,000)以上の数字を使用してメッセージに番号を付けることをお薦めします(メッセージ番号として可能な最大値は、約20億です)。

メッセージ・タイプ標準

メッセージ・タイプは、主に翻訳用として使用されます。メッセージ・タイプ(エラー、タイトルなど)が正確であれば、翻訳者は翻訳の際、エラー・メッセージなどのようにメッセージの長さを気にしなくてもよいか、またはフォームのフィールド・プロンプトのようにテキストの長さが厳しく制限されているのかを区別できます。英語版のOracle E-Business Suiteリリース12のメッセージでは、1文字が1バイトに相当しますが、他の言語では1文字が2バイト以上になることもあるので注意してください。

変数 説明
エラー スクリプト・ファイルでのタイプはERRORです。エラーおよび警告メッセージに使用します。エラー・タイプのメッセージは、英語で1260字以内とし、翻訳した場合は最長で1800バイトまで可能です(バイト数の増加が30%まで許容されます)。エラー・タイプのメッセージにはメッセージ番号が付きます。
注意 スクリプト・ファイルでのタイプはNOTEです。情報または指示的なメッセージに使用します(通常はFND_MESSAGE.SHOWを使用して表示されるメッセージ)。注意タイプのメッセージは、英語で1260字以内とし、翻訳した場合は最長で1800バイトまで可能です(バイト数の増加が30%まで許容されます)。注意タイプのメッセージには、普通はメッセージ番号は付きません。
ヒント スクリプト・ファイルでのタイプはHINTです。情報または指示的なメッセージに使用します(通常はFND_MESSAGE.HINTを使用して表示されるメッセージ)。ヒント・タイプのメッセージは、英語で190字以内とし、翻訳した場合は最長で250バイトまで可能です(バイト数の増加が30%まで許容されます)。
タイトル スクリプト・ファイルでのタイプはTITLEです。ウィンドウ・タイトル、レポート・タイトル、レポート・グループ・タイトル、グラフ・タイトルなどに使用します。タイトル・タイプのメッセージは英語で61字以内とし、翻訳した場合は最長で80バイトまで可能です(バイト数の増加が30%まで許容されます)。
30%拡張プロンプト スクリプト・ファイルでのタイプは30_PCT_EXPANSION_PROMPTです。フィールド・プロンプト、レポート列のラベル、グラフ・ラベルなどに使用しますが、スペースの関係上、翻訳時の字数増加は30%まで可能です(決められた表現や略称を除き、翻訳による10バイトの増加までは許容)。たとえば、英語で23字のフィールド・プロンプトの場合、翻訳後には30バイト分まで長くできます。ほとんどのプロンプトや定型挿入文では、このタイプを使用します。ただし、使用しているフォームやレイアウトのスペースにそれ以上の余裕があり、特に短いプロンプトであれば、それに適したタイプ(50%または100%の拡張プロンプト)を使用します。
50%拡張プロンプト スクリプト・ファイルでのタイプは50_PCT_EXPANSION_PROMPTです。フィールド・プロンプト、レポート列のラベル、グラフ・ラベルなどに使用しますが、スペースの関係上、翻訳時の字数増加は50%まで可能です(翻訳による10バイトの増加までは許容)。たとえば、英語で10字のフィールド・プロンプトの場合、翻訳後には15バイト分まで長くできます。
100%拡張プロンプト スクリプト・ファイルでのタイプは100_PCT_EXPANSION_PROMPTです。フィールド・プロンプト、レポート列のラベル、グラフ・ラベルなどに使用しますが、スペースの関係上、翻訳時の字数増加は100%まで可能です(翻訳による10バイトの増加までは許容)。たとえば、英語で6文字のフィールド・プロンプトの場合、翻訳後には12バイト分まで長くできます。
メニュー・エントリ スクリプト・ファイルでのタイプはMENUです。スペシャル・メニューでの選択肢など、特にアンパサンド2つ(&&)で示したアクセラレータ・キー(同等のキーボード入力)のあるエントリで使用します。理想的には、外観上の理由からメニュー・エントリは英語で約24字以内とされています。メニュー・エントリ・メッセージの長さは、英語で最長46バイト(翻訳後で60バイト)です。
トークン スクリプト・ファイルでのタイプはTOKENです。他のメッセージでトークン値として使用されるメッセージに使用します。このタイプは下位互換性のためにあり、新しいメッセージには使用できません(新しいメッセージでは、翻訳の必要なトークンを使用しません)。トークンを使用するメッセージ名と翻訳メッセージの長さ制限を示したメッセージの説明を含める必要があります。
その他 スクリプト・ファイルでのタイプはOTHERです。他のタイプに該当しないテキストに使用します。メッセージと翻訳の要件に関するメッセージの説明を含める必要があります(たとえば、メッセージを翻訳してはならなかったり、メッセージに長さ制限があるなどの場合)。

メッセージ説明標準

説明フィールドは、メッセージの目的、つまりメッセージをどのような場合にどのような方法で使用するかについて、翻訳者や他の開発者に伝えるために使用します。たとえば、スペシャル・メニュー・エントリのラベルとしてメッセージを定義する場合は、そのことをメッセージの説明フィールドに記入します。メッセージ説明は、翻訳されるテキストが短文の場合、特に重要になります。それによって翻訳者が、どのような状況でそのテキストが表示されるか見当をつけることができるからです。

メッセージが明確な場合であっても、翻訳者は、そのメッセージの翻訳をアプリケーションの関連領域で使用している他のテキストの翻訳と一致させるために、そのメッセージがどのようなときに発行されるのかを知っておく必要があります。

次にあげるケースのどれかに該当する場合、メッセージ説明を含めます。

ここで、context は、メッセージがどのような場合に表示されるかを表します。(ノートが明確でわかりやすく書かれてさえいれば、トークン名の説明にどのような書式を使用してもかまいません)。

変数 説明
例: このメッセージは、「仕訳データの入力」フォームに新しいエントリを作成した場合にのみ表示されます。
例: このメッセージは、ゼロによる除算を表すため「請求書台帳」レポートに表示されます。

メッセージ内容標準

内容標準に従うことによって、アプリケーションの使い勝手が向上し、翻訳も容易になります。

メッセージの長さは、英語で約1260字を超過しないでください。これは、ドイツ語などへの翻訳によって文字数が多くなる場合を考慮し、スペースに余裕を持たせているためです。

メッセージ・トークン標準

実行時にトークンを使用して値を含めることにより、メッセージをより柔軟に作成できますが、使用は控えめにしてください。

メッセージ内のトークンは必ず大文字にしてください。翻訳するメッセージ・マニュアルやメッセージ・ファイルで、トークンを識別しやすくするためです。

トークンの値が異なっていても前後のテキストの翻訳に影響しない場合にかぎり、トークンを使用します。トークンの値を翻訳しなくてはならないテキストでは、トークンを使用しないでください。一般に、次のタイプの値を表すときトークンを使用できます。

文中の語句に置き換えるためにトークンを使用しないでください。トークン値が異なると前後のテキストの翻訳も変えなくてはならないことがあるので、翻訳をほとんどできなくしてしまいます。たとえば、次のような場合です。

変数 説明
誤: This &ENTITY must be &ACTION. (この&ENTITYは&ACTIONである必要があります。)

これは翻訳が不可能な例です。名詞ENTITYは、男性名詞または女性名詞、あるいは単数または複数のいずれも可能です。そのため代名詞Thisと動詞mustのどちらも翻訳に影響します(たとえば、単数・複数、男性名詞・女性名詞など)。このメッセージは、(たとえばメッセージを読んでいるユーザーが発注書を承認できる場合)次のようにトークンをまったく使用しない1つか複数のメッセージとして書く方が適切です。

変数 説明
正: Please approve this purchase order. (この発注書を承認してください。)

英文で連続している句のなかには、他言語に翻訳すると文のあちこちに分散するものがあります。分散については、1つの単語を翻訳した場合に複数の単語に分かれるという問題もあります。たとえば、「not」という表現は、英文では1語で済みますが、フランス語の文では、「ne」と「pas」という2つの単語に分かれます。

たとえば、「Terminal is operational (端末は操作できます)」という文は、「Terminal est operationnel」と翻訳されます。一方この文の否定形は、「Terminal is not operational (端末は操作できません)」から「Terminal n'est pas operationnel」と翻訳されます。このように、英語では「not」という表現を1つのトークンで表現できますが、フランス語で翻訳するには別の場所にトークンを2つ配置する必要があります。

語順や文の構造は翻訳者がメッセージを翻訳する際に変更されやすいため、代入可能なテキストでは、語順に依存する語句を含めないようにしてください。

テキストをコード内にハードコードしない

また、代入テキストをフォーム内にハードコードしないでください。後から「メッセージ」ウィンドウを使用して、メッセージ・テキストを更新したり、翻訳できなくなるからです(また、メッセージを変更しなくてはならない場合に、フォームを再生成する必要があります)。メッセージ内にテキストの断片が必要である場合には、翻訳が必要な代入テキストについて、TRANSLATEトークンをメッセージ・ディクショナリ・ルーチンとともに使用してください。

説明的な変数トークン名を使用する

意味不明な変数トークンは避けます。トークン名は明確で読みやすいものとし、代入を行う前でもメッセージの意味がわかるようにします。説明的な変数トークンを含むメッセージであれば、使用したりデバッグするのも容易です。トークン名の単語を分けるには、アンダースコアを使用します。

変数 説明
正: &PURCHASE_ORDER_NUMBER
正: &USER_NAME
正: &ROUTINE_NAME
誤: &ENTITY1
誤: &TOKEN
誤: &NUMBER
誤: &NAME
誤: &TYPE

たとえば、&ROUTINE_NAMEというトークンは、次のようなメッセージで使用します。

APP-0123  Could not run routine &ROUTINE_NAME. 

説明的なトークン名でも、あいまいさが残っていることがあります。トークンが何を表しているかを翻訳者が正確に把握しにくいような場合は、ノート・フィールドを使用してトークンの目的を明らかにしておきます。トークンはメッセージの目的やコンテキストに関する重大な情報を提供することが多いので、翻訳者にとってこの情報は大切です。

同じメッセージ内で、別のトークンの部分文字列で始まるトークンを使用しないでください。たとえば、&TOKEN_NAMEと&TOKEN_NAME_INFOを同じメッセージで使用しないでください。

重要: メッセージをコールするコードを変更せずに、既存のトークン名を変更したり削除しないでください。

単数と複数のトークン値を区別するために2つのメッセージを使用する

単数形と複数形のトークン値の両方に同じメッセージを使用しないでください。トークンの最後にただ「(s)」を付けるということは受け入れられません。メッセージが翻訳される言語は、「s」(またはその他の1つまたは複数の後続文字)を単語の後に付けて複数形を示すとはかぎらないからです。たとえば、次のような場合です。

変数 説明
正: One row updated. &NUMBER_OF_ROWS rows updated. [2種類の別々のメッセージ]
誤: &NUMBER_OF_ROWS row(s) updated.
誤: &NUMBER_OF_ROWS rows updated. [単数形のメッセージは定義なし]

日付または日時の値を変換する

トークンで日付を渡す場合は、変換ルーチンを使用して、日付が正確な書式で表示されるようにします。そのようにしないと、NLS_DATE_FORMATを設定していてもDD-MON-YY書式で表示されてしまいます。

FND_MESSAGE.SET_TOKEN('ORDER_DATE', 
  app_date.date_to_chardate(:ORDERS.DATE_ORDERED),
  FALSE); 
FND_MESSAGE.SET_TOKEN('ORDER_DT_TIME', 
  app_date.date_to_chardt(:ORDERS.DATE_ORDERED), 
  FALSE); 

適切なメッセージを記述するための一般ガイドライン

該当する人に向かって発言する(無実で関係のない人を責めない)

メッセージの対象となりそうな人を必ず想定し、その対象ユーザーに向けてメッセージを書きます。たいていの場合、メッセージを見るのはアプリケーションのエンド・ユーザーであって、開発者、システム管理者、サポート担当者などではありません。

重要な情報に限定する

一般に、エンド・ユーザー(およびその他のユーザー)は障害の修正に必要な情報を最小限知りたいのであり、それさえわかれば作業を続行します。エンド・ユーザーは、障害の解決に役立つのでなければ、エラーを生成したルーチン名のような情報や、その他の技術情報を特に知りたいわけではありません。

ユーザーが達成可能なことのみを指示する

ユーザーがどのようなアプリケーション機能を使用するかを考えます。たとえば事務員であれば、アプリケーションのセットアップ・フォームからフレックスフィールド・セグメントのデフォルト値を変更するという権限はないのが普通です。同様に、開発者が不適切にコーディングしたフォームのコードに事務員がアクセスして変更を行う権限もおそらくありません。

開発者およびデバッグ専用のメッセージの場合でも、エンド・ユーザーが遭遇すると思われる状態を説明に書きます。システム管理、開発、またはサポート担当者向けの技術的操作を示し、エンド・ユーザーが何をすべきかがわかるようにします。

障害の原因がユーザー側にない場合はただちにそれを伝える

ユーザーの行為が直接または間接的に障害を引き起こしたのではない場合、オプションでメッセージの先頭に「プログラム・エラー: 」という表記を使用します。これは、開発者またはインストーラがシステム・テスト中に検出する必要があった問題に対してエラーでトラップされた「開発者エラー」問題の場合に特に重要です。

変数 説明
APP:FND-1514プログラム・エラー。フレックスフィールド・ユーザー・イグジットで無効な引数が設定されています。

メッセージにルーチン名を不必要に含めない

多くの場合、ルーチン名(特にトークンによって渡される名前)は、不必要かつ過度にユーザーをおびえさせるものです。

既存のメッセージ・テキストを不必要に変更しない

通常は変更を行うたびに、多くの人々の労力が費やされます。メッセージのテキストを変更すると、翻訳者もメッセージの旧訳を改訂して、アプリケーションの異言語バージョン間での不一致を防がなくてはならなくなります。

一時的なメッセージは決して書かない

メッセージに困惑するようなエラーが現れないようにします。たとえ後でメッセージをチェックする予定があっても、常にメッセージを実物として定義することを念頭においてください。また、エラー・メッセージや警告メッセージにはその場で実際のメッセージ番号を付けてください。

変数 説明
正: APP-8402 Account number does not exist.
誤: APP-9999 John, we need a message here. (ジョン、ここにメッセージが必要だよ。)

メッセージにスペル・チェックをかける

メッセージに困惑するようなエラーが現れないようにします。メッセージにはスペル・チェックをかけてください。

ユーザーがヘルプを必要とする場合

ユーザーが誰かのヘルプを借りて障害を解決する必要があるときは、次のフレーズのどれか1つを使用します。障害の解決のために値を知る必要のあるトークンがメッセージ内部に含まれている場合は、「that:」を含むフレーズのバージョンを使用します。これはユーザーに対し、ヘルプを依頼するにはメッセージ全体を書き出すことが重要であることを暗に示しています。トークンがなく、サポート担当者その他がメッセージ番号のみからメッセージ全体が参照できる場合は、「Please contact your...」のバージョンを使用します。

Please inform your support representative that:  (then blank line)
Please inform your system administrator or support representative that:  (then blank line)
Please inform your system administrator that:  (then blank line)
Please contact your support representative.
Please contact your system administrator.
Please contact your system administrator or support representative.
変数 説明
例: APP:FND-1591プログラム・エラー。フレックスフィールド・ルーチンの引数が無効です。サポート担当者に引数&ARGUMENT_NAMEのつづりが正しくないことを知らせてください。

問題がシステム管理者によって解決可能な場合、同じヘッダーで、「サポート担当者」のかわりに「システム管理者」を使用します。

変数 説明
例: APP:FND-1591フレックスフィールドの検証表&TABLE_NAMEがみつかりません。
値セットと関連付けられたフレックスフィールドの検証表が検出されなかったため、その値セットを使用したセグメントのデフォルト値を検証できませんでした。
システム管理者に連絡してください。

ほとんどのシステム管理者が解決できない(つまり、本音は「サポートを呼んでバグをログに記録する」ことを希望している場合)問題の場合は、前述の標準フレーズのうち「サポート担当者」というフレーズを含む1つを使用します。サポート担当者は、バグを実際にレポートするかどうかを判断できます。

メッセージの中で、オラクル社、オラクル社カスタマ・サポート・センターまたはワールドワイド・サポート(または類似のもの)あるいはオラクル・コンサルティングなどの問合せ先を特定しないでください。たくさんの顧客側現場にいるエンド・ユーザーは通常、現場にいる誰かに連絡を取り、その連絡を受けた者がオラクル社その他に連絡(またはWebサイトを参照)する必要があるので、そのような場合には「サポート担当者」という用語が適切な表現になります。また、オラクル社のサポート組織の名前は何度か変更されており、顧客によっては名前の異なるサポート組織の別の部署に問い合せる必要がある場合もあります。

メッセージ内の該当する場所に、次にあげるオプションのフレーズを使用してもかまいません(記号や空白も含む)。標準翻訳を再利用できるため、標準フレーズを使用することによって翻訳費用を抑えることができます。

Program error:  (1 space, then init cap)
Possible causes:  (then blank line)
Additional information for support representative:  (then blank line)
変数 説明
例: APP:FND-01234 &TRIGGERトリガーを実行できません。
サポート担当者に連絡してください。サポート担当者への追加情報: トリガーがフォーム内に存在することを確認してください。

注意: それ以上の技術情報を含めない場合は、「サポート担当者への追加情報...」の文を省略します。

複雑なメッセージ

メッセージの多くは、短くシンプルなメッセージに収まるよりは詳細な説明を必要とします。このような場合は、メッセージをできるだけ簡潔にしながら、必要なすべての情報を提供する必要があります。

まず、短いバージョンのメッセージを示し、ユーザーがメッセージ全体を読まなくても問題の概要がすぐにわかるようにします。空白行を入れてから、問題を解決に導く詳細な情報をユーザーに提供します。

問題の原因がいくつか考えられる場合は、それらに番号を付けて箇条書きにするとともに、原因の説明と処置を示します。

APP:FND-1518  Program error: Invalid arguments specified for the flexfield user exits.
Flexfield cannot find the segment qualifier name for your value validation rule.  
Possible causes:
1.  The flexfield user exits #FND LOADID, #FND POPID, or #FND VALID are specified incorrectly.  Check the syntax and spelling of the user exit arguments.
2.  The VRULE= parameter may be incorrect.  Make sure the value is in quotes, the \n's are in lower case, there are no spaces around the \n's, and all the information is provided.

特定タイプのメッセージ内容

大文字、大文字と小文字の混在、小文字

翻訳者は、メッセージの翻訳が必要かどうかを大文字か小文字かによって判断します。メッセージでは原則的に、すべてが大文字で表示されている語句は翻訳されません(これらは表名や列名などのオブジェクトまたはリテラル値とみなします)。大文字と小文字が混在するメッセージは翻訳されます。

小文字のみで表示されているメッセージは、通常はどのように翻訳してよいか混乱が生じます。これは、メッセージが他のメッセージの断片である可能性があるからです。たとえば、「enter a value」は、完結しているが正しくないメッセージとして解釈できますが、別のメッセージの断片という解釈も可能です(例: 「Please &ACTION for the &FIELD field.」)。このような場合は、メッセージ説明を付けて明確にする必要があります。

代入トークンは、&REQUEST_IDのように必ずすべて大文字で表します。トークンが翻訳されることはありません(トークンはコードに埋め込まれているため、翻訳すると実行時に代入の失敗が発生します)。

表名と列名

表名や列名がメッセージ内にあることは一般に不親切であると考えられているので、表名や列名をメッセージ内で使用しないでください。フォームでは通常、ユーザーが表や列に直接アクセスすることは不可能であり、メッセージで指示を伝えることはできません。そのため、フォーム・メッセージに表名や列名を入れることは特に不適切です。

メッセージに表名や列名を入れる必要がある場合は、小文字や大文字・小文字の混在ではなくすべて大文字にすることで、翻訳対象箇所ではないことを示します。必要であれば、メッセージに「表」や「列」などの単語を入れて、ユーザーにもわかりやすいようにします(例: 「... the table FND_CONCURRENT_REQUESTS has been...」)。翻訳者に対し、表名や列名を訳さないように伝えるメッセージ説明を含めることも必要です(明確にしておく表名または列名を説明に含めます)。

メッセージ内のナビゲータ・パスまたはメニュー・パス

ナビゲータ・パス(「ナビゲータ」ウィンドウからユーザーが選択)をメッセージ内でフォームまたは機能に対して使用しないでください。これは、ナビゲータ・パスは顧客側で変更されることが多いため(顧客がメニューを再定義できます)、メッセージが不正確になってしまうからです。

できれば、メッセージ内でメニュー・パス(デフォルトまたはプルダウン・メニュー)を使用しないでください。翻訳者がパスを正確に翻訳するには、ターゲット言語の対応するメニュー・パス全体を知る必要があります。デフォルト・メニューの選択時にメニュー・パスを使用する必要がある場合は、メニュー・エントリ間のデリミタとして「->」を使用します(例: 「ヘルプ」->「ツール」->「カスタム・コード」->「オフ」)。メッセージ説明でこれがデフォルト・メニュー・パスであることを示しておくと、翻訳者は対応する翻訳済メニュー・パスの見当がつきます。

フィールド名

メッセージ内でフィールド名を使用しないでください。メッセージ内に直接書き込んだフィールド名は、いったんフォームとメッセージが翻訳されると、実際のフィールド名に一致しないことがあります。フィールド名は随時変更されるので、メッセージが古くなってしまいます。そこで、常にメッセージを正確にするには、メッセージのメンテナンスを余分に行う必要が出てきます。

メッセージにフィールド名を使用する必要がある場合は、次の方法をお薦めします。

メッセージ内で値をリストしない

メッセージ内で値をリストしないようにします。メッセージに値をリストすることが想定される典型的なメッセージ・タイプは、「Please enter one of the following values: Blanket, Standard.」です。しかし原則的に、メッセージに値をリストしないでください。有効な値は随時変更されるので、メッセージが古くなってしまいます。常にメッセージを正確にしておくには、メッセージのメンテナンスを余分に行う必要があります。またユーザーは通常、可能であればフィールド上で値リストを使用して有効な値のリストを取得するか、フィールドがポップリストの場合はフィールドそのものからそのリストを取得できます。値リストをメッセージ内で重複して表示する必要はありません。

ヒント: 使用可能な値リストがないため「Choose A for Amount or R for Rate」のようなメッセージがフィールドで必要となる場合は、フィールド自体の変更をお薦めします。フィールドに値のリストを追加したり、必要に応じてポップリストやオプション・グループとして再実装できるはずです。影響を受けるフォームに対して拡張要求を行います。

どうしても値をリストする必要がある場合は、ユーザーの入力どおり正確に値をリストします。通常は、フィールドの要件にもよりますが、大文字または小文字のみではなく、大文字・小文字が混在したものになります。値に空白が含まれていないかぎり、値を引用符で囲む必要はありません。空白が含まれている場合は、リスト内の各値を二重引用符で囲みます(例: "My first value"、"My second value"、"Third")。

メッセージに値が必要な場合は、その値が翻訳対象かどうかを翻訳者に伝えるための、メッセージ説明を含める必要があります。たとえば、「Choose A for Amount or R for Rate.」というメッセージでは、「A」、「R」、「Amount」、「Rate」が翻訳対象かどうか、またどのように翻訳するかが翻訳者にはわかりません。

メッセージ記述スタイル

優先する単語選択

優先される単語およびスペルを使用すると、アプリケーション間で表示されるメッセージの統一に役立ちます。一般に、単語のスペリングはアメリカ英語を優先しています。使用を避けた方がよい単語と、それに代替する単語の例を次の表に示します。

一般的な状況

回避すべき例 望ましい例
username user name
filename file name
commit save
ID (列名またはフィールド名の一部を除く) Id (どのような場合でも不可) number
e.g. such as, for example
i.e. that is

日付の表現

回避すべき例 望ましい例
less than before
greater than after

口語体およびくだけた表現

口語体やくだけた表現は翻訳が難しい場合が多いため、使用を避けてください。

短縮形

短縮形はできるだけ使用しないでください。短縮形はくだけた会話や文章に使用されるもので、正確に翻訳されるとはかぎりません。「it' (it is)」、「don't」、「can't」(「cannot」は許容範囲)、「you've」など、くだけた文章では短縮形を使用するような語でも短縮しないで表記してください。

特殊文字: 引用符

メッセージでは引用符をなるべく使用しないようにします。切れ切れである読みにくいメッセージになるためです。ただし、複雑な値などの語句をメッセージの他の部分と区別するとき(複雑な値に空白が含まれている場合など)には、引用符が役に立ちます。

変数 説明
正: Please assign a value to the "JLBR Interest Debit Memo Batch Source" profile option. ("JLBR Interest Debit Memo Batch Source"プロファイル・オプションに値を割り当ててください。)
誤: Please assign a value to the JLBR Interest Debit Memo Batch Source profile option. (JLBR Interest Debit Memo Batch Sourceプロファイル・オプションに値を割り当ててください。)

多くの場合、頭文字を大文字にしたり、説明的な単語を慎重に使用することによって、値やフィールド名を十分に区別できます。

変数 説明
正: Please enter a positive numeric value in the Interest Amount field. (「利息額」フィールドにはプラスの値を入力してください。)
誤: Please enter a positive "Interest Amount".
誤: Please enter a positive numeric value in the "Amount" field.

できるだけ一重引用符('一重引用符')ではなく二重引用符("二重引用符")を使用してください。アメリカ英語では通常、一重引用符を所有格や短縮形を示すアポストロフィとして使用するからです(例: "Don't forget Sara's lecture.")。

特殊文字: アンダースコア

メッセージでは、トークン以外の単語にアンダースコアを使用しないでください。翻訳者は、アンダースコアが含まれている単語を、翻訳が不要なコード、表名または列名とみなします。アンダースコアを含む単語がある場合は、処理のしかたを翻訳者に伝える説明を付けておきます。

特殊文字: アンパサンド、アットマーク

メッセージのトークン(説明でノートも含めている場合はアクセラレータ・キーも)以外の部分にアンパサンド(&)を使用しないでください。翻訳者が混乱してメッセージが正確に翻訳されないことがあります。「および」という意味で使用するのであれば、そのかわりにandを使用してください。

またアットマーク(@)もメッセージには使用しないでください。メッセージ・ディクショナリの初期のバージョンでは、書式情報を示すのにアットマークを使用していましたが(例: @PARAGRAPHEND)、現在のメッセージにはこのような書式設定情報は一切ありません。

業界用語

極端な業界固有の用語は最小限にします。ユーザーやサポート担当者は多くの業界固有の用語を知っているかもしれませんが、メッセージでは単純な言葉を使用したほうが読みやすく翻訳も容易です。

大文字で始める単語

機能の名称および用語は大文字で始めます。たとえば、大文字で始めるかどうかは次のフレーズのようにします。

メッセージの書式(複数の段落など)

メッセージの書式設定はシンプルにします。メッセージを複数の項や段落で構成しなくてはならない場合は、空白行を挿入します。

変数 説明
例: APP:FND-01234 [Trigger]トリガーを実行できません。
サポート担当者に連絡してください。サポート担当者への追加情報として、トリガーがフォーム内に存在することを確認してください。

書式にはタブ文字や空白を使用しないでください。非常に見づらく、メンテナンスや翻訳に手間がかかるためです。また、メッセージ・ディクショナリで複雑な書式は使用しないでください。

強調

強調のために、大文字、大文字と小文字の混在、感嘆符( ! )、複数の強調記号(例: 「Do you want to quit???」や「Do you want to quit?!」)などを使用しないでください。強調は翻訳できません。ダイアログ・ボックスにメッセージが表示されたということだけでも、ユーザーの注意を引くのに十分です。状況にあわせたルーチン(エラー、警告など)を使用してメッセージがコールされることを確認します。

文末記号

メッセージが完結文の場合は、最後に文末記号(ピリオド、疑問符)を使用します。文末記号がないと、ユーザーや翻訳者はメッセージが偶発的に途切れたのかと思うかもしれません。

変数 説明
正: Please enter a value.
正: Please enter a value between 1 and 9.
誤: Please enter a value
正: Do you want to quit?
誤: Do you want to quit

感嘆符は使用しないでください。ユーザーに対して「怒鳴っている」ような印象を与えます。

正確かつ簡潔に

メッセージ・テキストは、形式にかなった書き言葉として扱ってください。容易に翻訳できる、力強くて簡潔な言葉を使用します。不必要な単語は省きます。

変数 説明
正: APP:SQLAP-14039 You cannot add lines to a completed requisition. (完了済購買依頼には行を追加できません。)
誤: APP:SQLAP-14039 You cannot affix any more new lines to a requisition that has already been completed. (すでに完了した購買依頼には新しい行を付け加えることはできません。)

あいまいな語句を避ける

1つの意味しかない単語を使用するようにしてください。特定のアプリケーション機能について述べている場合を除き、データ処理で別の意味がある単語の使用は避けます。

できるだけpleaseを付ける

丁寧さを心がけます。指示を行うメッセージで、メッセージ・フィールド長に余裕があればpleaseを使用してください。

変数 説明
正: APP-2201 Please enter an amount greater than 1.
誤: APP-2201 Enter an amount greater than 1.

フォームの定型挿入文と一致する用語を使用する

フォーム・フィールドについて述べるときは正確な名前を使用します。フィールドのラベルが「Sales Representative」であれば、「Please enter a different salesperson.」というメッセージにしないでください。

ユーザーにはyouと語りかける

ユーザーについて語るのではなく、ユーザーに対して語りかけます。ユーザーに直接語りかける友好的なメッセージが、アプリケーションを管理しているのはユーザーであることを実感させるので好まれます。また、「You」の方が「The user ...」よりも簡潔で力強くなります。

変数 説明
正: APP-0842 You cannot delete this row.
誤: APP-0842 The user cannot delete this row.

具体的でない未来形を避ける

未来時制は、未来の特定の時点またはイベントを指すときにかぎり使用します。それ以外の場合、willは通常あいまいな意味になります。

変数 説明
正: Checks will print on Tuesday.
正: APP-10491 Please select an invoice to cancel.
誤: APP-10491 Please select an invoice that you will cancel.

能動態を使用する

受動態は使用しないようにします。メッセージが特定の人物(ユーザー、システム管理者、他のユーザー)について述べる場合、メッセージではその人物を主語にします。

変数 説明
正: APP-4194 You have cancelled this process.
誤: APP-4194 This process has been cancelled.
誤: APP-4194 This process has been cancelled by you.
正: APP-0513 You cannot delete a row in this zone.
誤: APP-0513 Rows in this zone cannot be deleted. [誰がこのゾーンの行を削除できないのか不明瞭]
正: APP-4882 Your password has expired. Please contact your system administrator.
誤: APP-4882 Your password has expired. It must be changed.

非難がましいメッセージは避ける

ユーザーに非のあるような言い回しはしないでください。問題の解決に直接に関係するものでないかぎり、ユーザー側のミスについては触れないようにします。

変数 説明
正: APP-11394 Check number does not exist for this account. Please enter another.
誤: APP-11394 You entered an illegal check number
誤: APP-11394 Please enter another check number
誤: APP-11394 You made a mistake. Enter the right check number.
正: APP-17503 Please enter a deliver-to person.
誤: APP-17503 You did not enter a deliver-to person. Enter a deliver-to person.

命令形を使用する

助動詞を含む文は意味がはっきりしないことがあります。できるだけ命令形を使用してください。

助動詞を含む文は、ほとんどの場合命令形に書き換えることができます。

変数 説明
正: APP-17493 Please enter a commission plan.
誤: APP-17493 You can enter a commission plan. [or you can go to lunch, or ...]

条件節を避ける

条件節を含む文ではなく、能動態や命令形の文を使用してください。

変数 説明
正: APP-14583 Save your screen to submit this requisition for approval.
誤: APP-14583 If you save your screen, the requisition will be submitted for approval.

能力や権限を示すのに「can」を使用する

「could」、「may」および「might」などの助動詞にはあいまいさがあり、「can」ほど意味がはっきりしていません。「can」を使用すれば、不確実さの度合いが少しでも小さくなります。「can」は常に能力や権限の意味を含みますが、機会や幸運などの意味は含まないからです。

変数 説明
正: The person you named cannot approve requisitions online.
誤: The person you named may not approve requisitions online. [The person may not approve a requisition because of a foul mood or capriciousness or ...]
正: You cannot delete a printed release.
誤: You may not delete a printed release. [and it may not rain tomorrow, if you're lucky.]

ショートカット・キーや端末固有のキーではなくメニュー・パスを参照する

どのキーがどの機能を実行するかを覚えるようユーザーに強制しないでください。また、ユーザーがみな同じ種類の端末を使用しているわけではないことも、頭に入れておいてください。

変数 説明
正: APP-0457 Please use the list of values to see values for this segment. (このセグメントの値を参照するには値リストを使用してください。)
誤: APP-0457 Please press [QuickPick] to see values for this segment. (このセグメントの値を参照するには[QuickPick]キーを押してください。)
誤: APP-0457 Please press [Do] to save your changes. (変更を保存するには[Do]キーを押してください。)

キーを参照する必要がある場合は、次に示す標準キー名の一覧を使用してください。

キーについて述べるときは、次にあげる標準のキー名を使用します。メッセージ内にキー名を使用する場合、メッセージ記述にそれがキー名であることを示したノートを含める必要があります。アラブ語以外のほとんどの言語では、キー名を翻訳します(英語/アラブ語のキーボードでは、キー名が英語で表示されています)。そのため、メッセージにキー名が含まれている場合、特に翻訳者はそのことを意識する必要があります。

一貫した語彙でアプリケーションの機能を記述する

アプリケーションの他の機能を実行するようユーザーに助言するメッセージを書くときは、アプリケーション・フォームと同じ用語を使用します。

変数 説明
正: APP-16934 Please define a sales representative. [フォームが「Sales Representatives」フォームの場合]
誤: APP-16934 You have not entered any sales people. [フォームが「Sales Representatives」フォームの場合]

フォームやレポートに一致する略称のみを使用する

略称を使用すると、メッセージを読んだり翻訳するのが困難になることが多いため、必要最小限にとどめます。使用するとしても、アプリケーション・フォームで使用されている略称と一致しているものにかぎります。メッセージを使用するフォームで、ある用語が省略されていないのであれば、メッセージでもその用語を省略しないでください。

フォームやレポートで、単にスペースの都合上ある語句を省略している(つまりフォームに余裕があれば、完全なフレーズが使用される)場合、メッセージでは完全な語句を使用します。

変数 説明
正: APP-24943 Please close your MRP cycle.
誤: APP-24943 You are not authorized to complete this TRXN.

ある用語がどのアプリケーション・フォームでも使用されていない場合、あるいは使用されていても省略されているときと省略されていないときがある場合、その用語を省略するかどうかは次の基準に従って判断します。

機能名を動詞として使用しない

機能名を動詞として使用しないでください。

変数 説明
正: APP-8402 You cannot use DateTrack to change this record. (このレコードの変更にはDateTrackを使用できません。)
誤: APP-8402 You cannot DateTrack this record. (このレコードはDateTrackできません。)

メッセージには親しみやすく簡潔で専門的でない言葉を使用する

ユーザーに技術用語またはデータベース用語を使用しないでください。エンド・ユーザーが使用するような語彙を使用します。意味が通じる範囲でできるだけ簡単な語を使用してください。

変数 説明
正: APP-8402 Account number does not exist.
誤: APP-8402 Account ID does not exist.
正: APP-0127 No records exist.
誤: APP-0127 Application located no rows matching specified relationship.

メッセージは大文字で始める

メッセージの最初の文字を大文字にします。その後の単語は大文字で始めないでください。

変数 説明
正: At last zone.
誤: at last zone
誤: At Last Zone

解決指向のメッセージを書く

ユーザーが容易に解決できる単純なエラーである場合(たとえば、フィールドに値が入っていない、フィールドに無効な値が含まれているなど)、その問題を解消するための指示を短いメッセージにまとめます。

問題を説明するのではなく、解決するための方法を伝えてください。

変数 説明
正: APP-17403 Please enter a shipper.
誤: APP-17403 Shipper is missing.

その機能を実行できない理由を説明する

現行のコンテキストでは意味がないことをユーザーが試行しているときは、なぜ実行できないかを伝えます。

変数 説明
正: APP-14420 You cannot update this invoice because it is selected for payment.
誤: APP-14420 Invalid action
正: APP-12483 You have already cleared this exception.
誤: APP-12483 You cannot clear this exception.

類似のメッセージを区別する

密接に関係したエラー状態がフォームにいくつかある場合は、それらを区別するメッセージを使用します。

変数 説明
正: APP-17403 Vendor cannot accept new purchase orders. Choose another vendor.
APP-17408 Vendor cannot ship item in requested quantity. Choose another vendor.
誤: APP-17403 Vendor cannot accept this purchase order. Choose another vendor.
APP-17408 Vendor cannot accept this purchase order. Choose another vendor.

正確で説明的かつあいまいでない言葉を使用する

ユーザーと同様、翻訳者が容易に理解できるようなメッセージにしてください。省略された、わかりにくい、あいまいな、または状況に依存している言葉を使用しなければ、メッセージの翻訳はより容易になります。

特殊用途のメッセージ

定型挿入文、タイトル、ボタン・テキスト、ラベルとして使用されるメッセージ

定型挿入文、プロンプト、タイトル、ボタン・テキスト、ラベル、レポート・タイトルまたはHTMLとして使用するテキストをメッセージ・ディクショナリに格納しないでください。このような断片的なテキストは、コンテキストから離れて翻訳することが非常に困難です。特に、HTMLマークアップのテキストは翻訳の際に別のツールセットを使用する必要があり、メッセージ・ディクショナリには格納しないでください。

このようなテキストを格納する方法としてお薦めするのは、パラメータ・デフォルト値または静的レコード・グループ・セルを使用して、テキストをフォームに置くというものです。そこでテキストはフォームの残りの部分とともに翻訳されます。

このようなテキストをメッセージ・ディクショナリに格納する必要がある場合、テキストをどのような場合にどのように使用するか、および拡張時に許容される最大長を正確に示した完結したメッセージ摘要を提供します。これらのメッセージにはメッセージ番号を付けません。

メニュー選択肢として使用されるメッセージ

これがメニュー・エントリであることをメッセージ摘要で示します。メニュー・エントリにアンパサンド(&)があり、アクセラレータ・キーが有効になっている場合は、メッセージ摘要にそのことを示して、トークンのアンパサンドが単に間違ってそこに配置されたと翻訳者に誤解させないようにします。

一般に、翻訳者は翻訳済のメニュー・エントリでアンパサンドを削除しますが、トークンに使用されるアンパサンドは削除しないよう注意を払う必要があります。また、メニュー・エントリではアンパサンド2つ(&&)を使用できますが、その場合もメッセージ摘要を適切に与える必要があります。

使用方法のメッセージ

開発者またはユーザーがルーチンの引数を間違って指定している場合には、使用方法に関する情報を提供してください。ルーチンの使用方法に関する情報を含むアクションを含んでいれば、サポート担当者がコンカレント・プログラムに関係した顧客側の問題を解決することが容易になります。また、開発者がルーチンを実装するのもより簡単になります。使用方法のアクションの中に次の情報を含めてください。

使用方法に関する情報を提供するときは、次の例に従ってください。

APP:FND-0490  Please enter the correct arguments for FNDMDCTM as follows. 
Syntax:  FNDMDCTM <ORACLE ID> <Request ID> <OS Flag> <Source Language Short Name> <Destination Language Short Name> [<Application Name>] 
Example:  FNDMDCTM APPLSYS/FND 0 Y usaeng gerger 'Oracle General Ledger' 
ORACLE ID:  Enter the username and password of the applsys ORACLE ID.  Enter the username and password without any spaces and separated by a slash ("/"). 
Request ID:  This argument is no longer used and is present for backward compatibility only.  Enter 0. 
OS Flag:  This argument is no longer used and is present for backward compatibility only.  Enter Y. 
Source Language Short Name:  Enter the short name of the language from which you wish to copy messages. 
Destination Language Short Name:  Enter the short name of the language to which you wish to copy messages. 
Application Name:  Enter the name of the application for the messages you wish to copy.  This argument is optional. 

メッセージのどの部分を翻訳するか(または翻訳しないか)を伝えるメッセージ摘要を必ず含めてください。

デバッグ・メッセージ

デバッグ・メッセージの多くは、フォームに英語で直接ハードコードされ、翻訳されたりメッセージ・ディクショナリで定義されることはありません。これらは通常、PL/SQLコードに埋め込まれたメッセージであり、ハンドラの最後のブランチとして機能します。次に例を示します。

 ELSE 
           fnd_message.debug('Invalid event passed to
                   control.orders_lines: ' || EVENT); 
       END IF;

このようなメッセージを、決してエンド・ユーザーに向けて表示しないようにしてください。

もう1つのタイプのデバッグ・メッセージは、「デバッグ・モード」(Oracle Receivablesなど一部のアプリケーションでサポート)でアプリケーションを実行中にユーザー(通常はサポート担当者)に対して表示されます。このメッセージは一般にログ・ファイルとして表示され、メッセージ・ディクショナリに定義されています。またこのメッセージは翻訳の対象であり、該当するすべてのメッセージ標準を満たす必要があります。

「メッセージ」ウィンドウ

アプリケーション・メッセージの定義は、ルーチンがフォームからメッセージをコールする前、およびユーザーがフォームから詳細なメッセージを要求する前に定義します。メッセージは、Oracle E-Business Suiteメッセージ標準に従って定義します。

「メッセージ」ウィンドウから移動して、変更を作成し保存したら、「メッセージの生成」プログラムにコンカレント要求を発行してメッセージ・ファイルを作成します。新規メッセージは、コンカレント要求が正常に完了した後、該当するディレクトリに新規ファイルを置くとただちに有効になります。

アップグレードすると、Oracle E-Business Suiteメッセージに対して行ったカスタマイズはすべて上書きされます。ただし、自分のアプリケーションを使用して定義したメッセージは、アップグレードしても上書きされません。

独自のメッセージを定義する前に、次の点を確認してください。

メッセージ・ブロック

アプリケーション名、メッセージ名および言語がメッセージを一意に識別します。

名称

メッセージ名は、文字、数字、ハイフン(-)、アンダースコア(_)および空白を任意に組み合せた、長さ30文字以内の名前です。メッセージ・ディクショナリの名前は、大文字と小文字を区別しません(たとえば、MESSAGENAMEとmessagenameは同じ名前となります)。

このメッセージ名は、メッセージ・ディクショナリを起動する際にフォームまたはコンカレント・プログラムで使用します。

言語

このメッセージの言語コードを入力します。Oracle E-Business Suiteは、ユーザーの現行言語に基づき、適切な言語でメッセージを表示します。

アプリケーション

メッセージ・テキストを定義するアプリケーション名を入力します。

アップグレードすると、Oracle E-Business Suiteメッセージに対して行ったカスタマイズはすべて上書きされます。ただし、自分のアプリケーション名を使用して定義したメッセージは、アップグレードしても上書きされません。

番号

メッセージ番号があれば、それを入力します。メッセージにゼロ以外のメッセージ番号を定義した場合、メッセージ・ディクショナリはメッセージにAPP:<アプリケーションの短縮名>- (またはその翻訳名)が自動的に付加されます。メッセージ・ディクショナリでは、0とNULLを同様に扱います(またAPP:<アプリケーションの短縮名>またはメッセージ番号を表示しません)。

タイプ

メッセージ・タイプを使用して、メッセージを分類します。メッセージ・タイプによって、メッセージをコールする方法がコーディングにおいて変わるわけではありません。

Oracle E-Business Suiteでは、メッセージ・タイプによって異なるメッセージの長さ制限の範囲内で、翻訳者がメッセージを翻訳しやすいようなメッセージ・タイプを使用します。一部のメッセージ・タイプでは、このフォームはメッセージ・バイト長の制限を1800未満と決めています。メッセージ長の制限をバイト数で表すと、メニュー・エントリが60、ヒントが250、タイトルが80になります(ただし、これらは翻訳済メッセージの長さです。したがって翻訳する前の英語のメッセージでは、それよりも30%短くなります)。

最大長

Oracle E-Business Suiteでは、メッセージを使用するフォームまたはプログラムでの長さ制限の範囲内で翻訳者が翻訳しやすいように、バイト数で表した最大長を使用します。特定タイプのメッセージで通常考えられるよりもメッセージの長さ制限が厳しい場合、最大長を指定することは特に重要です。メッセージが英語の場合は、翻訳時に長さが実際の英語メッセージより30%以上長くなることを考慮に入れて、最大長を指定します。

メッセージ・タイプが「エラー」、「注意」、「トークン」、「その他」またはメッセージ・タイプのないメッセージの場合、最大長の指定は任意です。最大長を指定する場合は、10以上1800以下とし、指定するメッセージ・テキストの実際の長さ(バイト)以上の長さにする必要があります。

説明

このフィールドには、メッセージのコンテキストを翻訳者に説明する情報を入力します。このフィールドは、メッセージ・タイプが「トークン」または「その他」の場合に必要です。

アラート・カテゴリ、アラート重要度、ログ重要度

Oracle E-Business Suiteメッセージ・ディクショナリのメッセージは、Oracle Applications Managerでアラートとして表示されるか、ログ・ファイルに書き込まれます。これらの機能の使用方法とフィールドの設定方法の詳細は、『Oracle E-Business Suiteメンテナンス・ガイド』を参照してください。

現在のメッセージ・テキスト

問題とその解決方法を説明するメッセージを入力します。前にアンパサンド(&)を付けた変数トークン(大文字)を含めて、代入テキストの位置を示すことができます。フォームのメッセージ・コールの中で、代入テキストまたはフィールド参照を提供します。たとえば、「以下の値」というメッセージの説明は、次のように定義できます。

Please enter a value that is less than or equal to &VALUE. 

このメッセージの説明は、ユーザーに対して次のように表示されます。

Please enter a value that is less than or equal to $30.00.  

数字、大文字およびアンダースコア(_)を使用して、独自の変数トークンを指定できます。この変数トークンは最長で30文字です。定義済のメッセージで同じトークンを2回以上使用し、代入テキストを繰り返すこともできます。

メッセージ使用の一部(スペシャル・メニューのエントリなど)では、アンパサンド文字を使用して、アクセス・キー、ショートカット・キーまたはアクセラレータ・キーを示します。このような場合は、アンパサンド2つ(&&)を使用して、そのキーの文字を示します。メッセージ・ディクショナリは、コール側ルーチンに対してアンパサンド1つのみを戻します。アンパサンド2つが埋め込まれている単語は、大文字と小文字または小文字のみにする必要があります(さらにトークンと区別するため)。

「メッセージ」ページ

HTMLベースの「メッセージ」ページは、シードされている機能管理者職責を使用してコア・サービス・タブから使用できます。

メッセージの定義方法の詳細は、「メッセージ」ウィンドウでフォーム・ベースの「メッセージ」ウィンドウに関する項を参照してください。

コード

コードは、「メッセージ」ウィンドウの「名称」に対応します。

メッセージ名は、文字、数字、ハイフン(-)、アンダースコア(_)および空白を任意に組み合せた、長さ30文字以内の名前です。メッセージ・ディクショナリの名前は、大文字と小文字を区別しません(たとえば、MESSAGENAMEとmessagenameは同じ名前となります)。

このメッセージ名は、メッセージ・ディクショナリを起動する際にフォームまたはコンカレント・プログラムで使用します。

説明

このフィールドには、メッセージのコンテキストを翻訳者に説明する情報を入力します。このフィールドは、メッセージ・タイプが「トークン」または「その他」の場合に必要です。

アプリケーション

メッセージ・テキストを定義するアプリケーション名を入力します。

アップグレードすると、Oracle E-Business Suiteメッセージに対して行ったカスタマイズはすべて上書きされます。ただし、自分のアプリケーション名を使用して定義したメッセージは、アップグレードしても上書きされません。

言語

このメッセージの言語コードを入力します。Oracle E-Business Suiteは、ユーザーの現行言語に基づき、適切な言語でメッセージを表示します。

タイプ

メッセージ・タイプを使用して、メッセージを分類します。メッセージ・タイプによって、メッセージをコールする方法がコーディングにおいて変わるわけではありません。

Oracle E-Business Suiteでは、メッセージ・タイプによって異なるメッセージの長さ制限の範囲内で、翻訳者がメッセージを翻訳しやすいようなメッセージ・タイプを使用します。一部のメッセージ・タイプでは、このフォームはメッセージ・バイト長の制限を1800未満と決めています。メッセージ長の制限をバイト数で表すと、メニュー・エントリが60、ヒントが250、タイトルが80になります(ただし、これらは翻訳済メッセージの長さです。したがって翻訳する前の英語のメッセージでは、それよりも30%短くなります)。

テキスト

問題とその解決方法を説明するメッセージを入力します。前にアンパサンド(&)を付けた変数トークン(大文字)を含めて、代入テキストの位置を示すことができます。フォームのメッセージ・コールの中で、代入テキストまたはフィールド参照を提供します。たとえば、「以下の値」というメッセージの説明は、次のように定義できます。

Please enter a value that is less than or equal to &VALUE. 

このメッセージの説明は、ユーザーに対して次のように表示されます。

Please enter a value that is less than or equal to $30.00.  

数字、大文字およびアンダースコア(_)を使用して、独自の変数トークンを指定できます。この変数トークンは最長で30文字です。定義済のメッセージで同じトークンを2回以上使用し、代入テキストを繰り返すこともできます。

メッセージ使用の一部(スペシャル・メニューのエントリなど)では、アンパサンド文字を使用して、アクセス・キー、ショートカット・キーまたはアクセラレータ・キーを示します。このような場合は、アンパサンド2つ(&&)を使用して、そのキーの文字を示します。メッセージ・ディクショナリは、コール側ルーチンに対してアンパサンド1つのみを戻します。アンパサンド2つが埋め込まれている単語は、大文字と小文字または小文字のみにする必要があります(さらにトークンと区別するため)。