BEA ホーム | 製品 | dev2dev | support | askBEA
TM TM
 ドキュメントのダウンロード   サイト マップ   Glossary 
検索

インターナショナライゼーション ガイド

 Previous Next Contents Index PDF で侮ヲ  

BEA WebLogic Server でのメッセージ カタログの使い方

以下の節では、メッセージ カタログとその使い方について説明します。

 


メッセージ カタログの概要

メッセージ カタログは、テキスト メッセージのコレクションの説明が格納される XML ファイルです。各メッセージは、ユニークな識別子でインデックス付けされます。これらの XML ファイルを、i18ngen ユーティリティのビルド プロセスでクラスにコンパイルします (詳細については、18ngen ユーティリティを参照してください)。生成されたクラスのメソッドは、実行時にメッセージをログに記録するために使用されるオブジェクトとなります。

メッセージ カタログでは、複数のロケールまたは言語がサポートされています。個々のメッセージ カタログには、最上位カタログというデフォルト バージョンが必ず 1 つあります。さらに、追加してサポートされるロケールごとに、対応するロケール固有のカタログが付加されます。最上位カタログには、メッセージの定義に必要なすべての情報が含まれます。ロケール固有のカタログには、メッセージ ID、変更された日付、および特定ロケールに対応するメッセージの変換だけが含まれます。

メッセージ カタログ ファイルは、XML DTD (Document Type Definition:文書型定義) によって定義されます。この DTD は msgcat ディレクトリに格納されます。msgcat ディレクトリの場所は、WebLogic Server のインストール先によって異なる場合があります。デフォルト インストール パスを使用した場合、msgcat ディレクトリは WL_HOME¥samples¥server¥src¥examples¥i18n¥msgcat の下の BEA_HOME ディレクトリにあります。

WebLogic Server 配布キットには、以下の 2 つの DTD が付属しています。

この msgcat ディレクトリには、最上位のメッセージ カタログおよびロケール固有のメッセージ カタログ作成に使用できるテンプレートも入っています。

メッセージ カタログの作成では、ロギングのすべての必要条件に対応するログ メッセージ カタログを 1 つ作成するか、サブシステムまたは Java パッケージごとに細かく分けてカタログを作成するか、いずれかを選択できます。複数のサブシステムを使用すると、表示するときにそのログの特定の部分に焦点を当てることができるので、この方法をお勧めします。

シンプル テキストのカタログの場合は、インターナショナライズされるユーティリティごとに 1 つのカタログを作成することをお勧めします。BEA WebLogic Server メッセージ エディタの使い方で説明されているメッセージ エディタを使用すれば、特定サイト用のメッセージ カタログを作成することができます。

 


メッセージ カタログの階層

すべてのメッセージおよび例外は、デフォルトの最上位カタログで定義する必要があります。WebLogic Server 配布キットには、WL_HOME¥samples¥server¥src¥examples¥i18n¥msgcat ディレクトリにサンプル カタログ集が付属しています。

注意: このディレクトリ パスは、WebLogic Server のインストール先によっては異なる場合があります。

基本カタログのさまざまなローカライゼーションを提供するカタログは、ロケールに基づいた名前がついた msgcat のサブディレクトリ (例: ドイツの場合 msgcat¥de) に定義されています。たとえば、mycat.xml という最上位カタログと ..¥de¥mycat.xml というそのドイツ語版カタログがある、といった要領です。通常、最上位カタログは英語ですが、インストールされている WebLogic Server のカタログ以外のカタログで英語は必要ではありません。

java.util.Locale のドキュメントで定義されているように、ロケールの指定 (de など) にも階層があります。ロケールでは言語、国、およびバリアントを指定できます。言語は、ロケール指定でもっとも一般的なものです。言語は国コードによって拡張できます。たとえば、en¥US はアメリカ英語を示します。これに関連付けられたカタログの名前は、..¥en¥US¥mycat.xml となります。バリアントはベンダまたはブラウザに固有であり、言語または国で定義された複数のロケールの間で細かな違い (照合順序など) を持たせるために使用します。

 


メッセージ カタログの名前の選択

メッセージ カタログ ファイルの名前 (.xml 拡張子なし) は、実行時クラスおよびプロパティ名の生成に使用されるため、命名は慎重に行なってください。

メッセージ カタログに名前をつける場合、以下のガイドラインに従ってください。

たとえば、カタログの名前が Xyz.xml の場合、生成されるクラスの名前は XyzLogLocalizer および XyzLogger になります。

以下に挙げる考慮事項も、メッセージ カタログ ファイルに適用されます。

 


メッセージ引数の使い方

ログ メッセージのメッセージ本文、メッセージの詳細、原因、およびアクションといったセクションには、java.text.MessageFormat に記載されているようなメッセージ引数を組み込むことができます。シンプル メッセージでは、引数を入れられるのは、メッセージ本文のセクションに限られます。引数は、実行時に動的に設定される値を表します。これらの値は、メッセージを出力するなど、ルーチンに渡されます。1 つのメッセージには 0 〜 9 で番号付けされた 10 個までの引数をサポートできます。メッセージ本文にはすべての引数を入れるようにしますが、メッセージ定義の任意のテキスト セクションにもこれらの引数の任意のサブセットを入れることができます。メッセージ引数は開発時にメッセージの定義に挿入され、実行時においてメッセージがログに記録されるときに適切なメッセージ コンテンツに置き換えられます。

以下は、XML ログ メッセージ定義の抜粋で、メッセージ引数の使い方を示しています。引数の番号は、method 属性で指定された引数の 1 つと対応していなければなりません。具体的には、{0} は最初の引数、{1} は 2 番目の引数、という要領で対応している必要があります。

コード リスト 2-1 メッセージ引数の例

<messagebody>Unable to open file, {0}.</messagebody>
<messagedetail>
File, {0} does not exist. The server will restore the file
contents from {1}, resulting in the use of default values
for all future requests.
</messagedetail>
<cause>The file was deleted</cause>
<action>
If this error repeats then investigate unauthorized access to
the file system.
</action>

次に、上のメッセージの method 属性の例を示します。

-method=゛logNoFile(String name, String path)"

このメッセージでは、2 つの引数 {0}{1} が使用されます。

また、引数は文字列であるか、文字列として表現可能である必要があります。数値データは {n,number} として表されます。日付は {n,date} の形式がサポートされます。また、ログ メッセージでは重要度レベルを割り当てる必要があります。ログ メッセージは、Logger メソッドによって method 属性で定義されているとおりに生成されます。

 


メッセージ カタログのフォーマット

最上位のカタログ ファイルとロケール固有のカタログ ファイルでは、カタログのフォーマットが若干異なります。最上位のカタログでは、基本ロケールのテキスト メッセージが定義されます。ロケール固有のカタログは、最上位バージョンで定義されているテキストの翻訳だけを備えています。さらに、ログ メッセージ カタログではシンプル テキスト カタログと定義の方法が異なります。

これら各タイプのカタログの要素は、以下の節で説明されています。

ログ メッセージ カタログの要素

この節では、ログ メッセージ カタログの以下の要素に関するリファレンス情報を提供します。

message_catalog

次の表では、message_catalog 要素で定義できる各属性について説明します。

属性

デフォルト値

必須/
省略可能

説明

i18n_package

weblogic.i18n

省略可能

このカタログの Logger クラスを含む Java パッケージ。クラスの名前はカタログ ファイルの名前に基づいて付けられる。たとえばカタログの名前が mycat.xml の場合、生成される Logger クラスの名前は i18n_package.mycatLogger.class になる。

l10n_package

weblogic.i18n

省略可能

このカタログの LogLocalizer プロパティを含む Java パッケージ。クラスの名前はカタログ ファイルの名前に基づいて付けられる。たとえばカタログの名前が mycat.xml の場合は、l10n_package.mycatLogLocalizer.properties という名前のプロパティ ファイルが生成される。

subsystem

なし

必須

このカタログに関連付けられているサブシステムを識別する頭字語。サブシステムの名前はエラー ログに含まれ、メッセージの分離を目的として使用される。

version

なし

必須

使用される msgcat.dtd のバージョンを指定する。書式は n.n で、たとえば version="1.0" のように定義する。数値は「1.0」以上で指定する。

baseid

000000: WebLogic Server カタログ

500000ユーザ定義のカタログ

省略可能

このカタログで使用される最小のメッセージ ID を指定する。構文は 0 〜 9 を 6 つ並べたもの。

endid

499999: WebLogic Server カタログ

999999: ユーザ定義のカタログ

省略可能

このカタログで使用される最大のメッセージ ID を指定する。構文は 0 〜 9 を 6 つ並べたもの。


 

log_message

次の表では、log_message 要素で定義できる各属性について説明します。

属性

デフォルト値

必須/
省略可能

説明

messageid

なし

必須

このログ メッセージのユニークな識別子。識別子は、すべてのカタログにわたってユニークでなければならない。値は、baseid 属性と endid 属性で定義された範囲で指定する必要がある。これは message_catalog の子要素となっている。

datelastchanged

なし

省略可能

このメッセージの修正管理に使用される日付と時刻のスタンプ。日付は、カタログで動作するユーティリティによって提供される。構文は次のとおり。

Long.toString(new Date().getTime());

severity

なし

必須

ログ メッセージの重要度を示す。値は、debuginfowarningnoticeerrorcriticalalert、または emergency のいずれか。ユーザ カタログで使用できるのは、debuginfowarning および error に限られる。

stacktrace

true

省略可能

Throwable の引数に対するスタック トレースを生成するかどうかを示す。指定できる値は true または false。値が true の場合はトレースが生成される。構文は次のとおり。

stacktrace="true"

method

なし

必須

このメッセージをログに記録するためのメソッド シグネチャ。実際には、ここで指定されるメソッドと Throwable 引数が追加された同様のメソッドの 2 つが提供される。

構文は標準の Java メソッド シグネチャから修飾子、セミコロン、および拡張子を除いたもの。引数の型には Java プリミティブまたは Java クラスを使用できる。クラスは java.lang にない場合は完全修飾でなければならない。また、クラスは java.text.MessageFormat の規約に準拠していなければならない。たいていの場合、クラス引数は便利な toString() メソッドを備えている。

引数には有効であればどのような名前でも指定できるが、argn (n は 0 〜 9) の規約に従っていなければならない。指定できる引数は 10 個まで。各 argn について、その他の log_message カタログ要素で説明されているテキスト要素に少なくとも 1 つの対応するプレースホルダが存在しなければならない。プレースホルダの形式は {n}{n,number}、または {n,date}

loggables

False

省略可能

各メッセージに対して、Loggable オブジェクトを返すメソッドを生成するかどうかを指定する。構文は次のとおり。

loggables="true"

BEA WebLogic Server 用の Loggable オブジェクトのリファレンスを参照


 

その他の log_message カタログ要素

次の表では、log_message 要素の子要素を説明します。

要素

親要素

必須/
省略可能

説明

messagebody

log_message

必須

このメッセージの短い説明を示す文字列。この要素では 0 個以上のプレースホルダ {n} を使用できる。プレースホルダは、ログ メッセージがローカライズされるときに適切な引数で置き換えられる。

messagedetail

log_message

必須

イベントの詳しい説明を示す文字列。この要素では 0 個以上のプレースホルダ {n} を使用できる。プレースホルダは、ログ メッセージがローカライズされるときに適切な引数で置き換えられる。

cause

log_message

必須

問題の根本的な原因を説明する文字列。この要素では 0 個以上のプレースホルダ {n} を使用できる。プレースホルダは、ログ メッセージがローカライズされるときに適切な引数で置き換えられる。

action

log_message

必須

適切な解決策を説明する文字列。この要素では 0 個以上のプレースホルダ {n} を使用できる。プレースホルダは、ログ メッセージがローカライズされるときに適切な引数で置き換えられる。


 

ログ メッセージ カタログの例

次の例は、ログ メッセージを 1 つ持つログ メッセージ カタログ MyUtilLog.xml を示しています。

コード リスト 2-2 ログ メッセージ カタログの例

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd" "http://www.bea.com/servers/wls700/dtd/msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
baseid="600000"
endid="600100"
<log_message
messageid="600001"
severity="warning"
method="logNoAuthorization(String arg0, java.util.Date arg1,
int arg2)"
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</log_message>
</message_catalog>

シンプル テキスト メッセージ カタログの要素

この節では、シンプル テキスト メッセージ カタログの以下の要素に関するリファレンス情報を提供します。

message_catalog

次の表では、message_catalog 要素で定義できる各属性について説明します。

属性

デフォルト値

必須/
省略可能

説明

l10n_package

weblogic.i18n

省略可能

このカタログに生成された TextFormatter クラスおよび TextLocalizer プロパティを含む Java パッケージ。クラスの名前はカタログ ファイルの名前に基づいて付けられる。

たとえばカタログの名前が mycat.xml の場合は、l10n_package.mycatTextLocalizer.properties という名前のプロパティ ファイルが生成される。

subsystem

なし

必須

このカタログと関連付けられているサブシステムを識別する頭字語。サブシステムの名前はエラー ログに含まれ、メッセージの分離を目的として使用される。

version

なし

必須

使用される msgcat.dtd のバージョンを指定する。書式は n.n で、たとえば version="1.0" のように定義する。数値は「1.0」以上でなければならない。


 

message

次の表では、message 要素で定義できる各属性について説明します。

属性

デフォルト値

必須/
省略可能

説明

messageid

なし

必須

このログ メッセージのユニークな識別子 (英数字の文字列)。識別子はこのカタログのコンテキストの中でユニークであれば良い。messagemessage_catalog の子要素である。

datelastchanged

なし

省略可能

このメッセージの修正の管理に便利な日付と時刻のスタンプ。

method

なし

省略可能

このメッセージをフォーマットするためのメソッド シグネチャ。

構文は標準の Java メソッド シグネチャから戻り値の型、修飾子、セミコロン、および拡張子を除いたもの。戻り値の型は常に String。引数の型には Java プリミティブまたは Java クラスを使用できる。クラスは java.lang にない場合は完全修飾でなければならない。また、クラスは java.text.MessageFormat の規約に準拠していなければならない。たいていのクラス引数は便利な toString() メソッドを備えており、対応する MessageFormat プレースホルダは文字列でなければならない (つまり {n} の形式)。引数には有効であればどのような名前でも指定できる。指定できる引数は 10 個まで。

各引数について、次に説明する messagebody 要素に少なくとも 1 つの対応するプレースホルダが存在しなくてはならない。プレースホルダの形式は {n}{n,number}、または {n,date}

例:

method="getNoAuthorization
(String filename, java.util.Date creDate)"

この例は、次のように TextFormatter クラスのメソッドになる。

public String getNoAuthorization
(String filename, java.util.Date creDate)


 

messagebody


 

次の表では、message 要素の子要素を説明します。

要素

親要素

必須/
省略可能

説明

messagebody

メッセージ

必須

メッセージと関連付けられたテキスト。

この要素では、0 個以上のプレースホルダ {n} を使用できます。プレースホルダは、ログ メッセージがローカライズされるときに適切な引数で置き換えられます。


 


 

シンプル テキスト カタログの例

次の例は、テキスト定義が 1 つあるシンプル テキスト カタログ MyUtilLabels.xml を示しています。

コード リスト 2-3 シンプル テキスト カタログの例

<?xml version="1.0"?> 
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls700/dtd/msgcat.dtd">
<message_catalog>
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
<message>
messageid="FileMenuTitle"
<messagebody>
File
</messagebody>
</message>
</message_catalog>

ロケール固有のカタログの要素

ロケール固有のカタログは、最上位カタログのサブセットです。ロケール固有のカタログは、それらが表すロケールに基づいた名前のサブディレクトリに格納されます。以下の節で説明する要素および属性は、ロケール固有のカタログに有効なものです。

locale_message_catalog

次の表では、locale_message_catalog 要素で定義できる各属性について説明します。

属性

デフォルト値

必須/
省略可能

説明

l10n_package

weblogic.i18n

省略可能

このカタログに対して生成された LogLocalizer または TextLocalizer プロパティを含む Java パッケージ。プロパティの名前はカタログ ファイル名に基づいて設定される。

たとえば、mycat.xml という名前のフランス語版のログ メッセージ カタログでは、プロパティ ファイルは l10n_package.mycatLogLocalizer_fr_
FR.properties
となる。

version

なし

必須

使用される msgcat.dtd のバージョンを指定する。書式は n.n で、たとえば version="1.0" のように定義する。数値は「1.0」以上でなければならない。


 

log_message

ロケール固有のカタログでは、ログ メッセージ カタログの log_message 要素で定義された属性が使用されますので、この要素は改めて定義する必要はありません。

その他の locale_message_catalog 要素

ロケール固有のカタログでは、ログ メッセージ カタログで定義された messagebodymessagedetailcause、および action の各カタログ要素を使用しますので、これらの要素を改めて定義する必要はありません。

ロケール メッセージ カタログの構文

次の例は、...¥msgcat¥fr¥MyUtilLabels.xml にあるメッセージのフランス語版です。

翻訳されたメッセージをリスト2-4 に示します。

コード リスト 2-4 フランス語に翻訳されたメッセージの例

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls700/dtd/l10n_msgcat.dtd">
<locale_message_catalog
l10n_package="programs.utils"
subsystem="MYUTIL"
version="1.0">
<message>
<messageid="FileMenuTitle">
<messagebody> Fichier </messagebody>
</message>
</locale_message_catalog>

messagebodymessagedetailcause、および action の各要素でテキストを入力するときには、有効な UTF-8 (Unicode Transformation Format-8) 文字を生成するツールを使用するとともに、適切なキーボードのマッピングがインストールされている必要があります。UTF-8 は、ASCII 文字のエンコーディングを最適化する、効率的な Unicode 文字列エンコーディング方式です。メッセージ カタログでは常に UTF-8 エンコーディング方式が使用されます。WebLogic Server と共にダウンロードされる MessageLocalizer ユーティリティは、有効な UTF-8 文字の生成に使用できるツールです。

 

Back to Top Previous Next