ORACLE JAPAN Server Release 6.1

 

  |  

  WebLogic Server ホーム   |     インターナショナライゼーション ガイド   |   前へ   |   次へ   |   目次   |   索引   |   PDF 版

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

 

インターナショナライズするテキストはすべてメッセージ カタログで定義します。各メッセージ カタログでは、ログ メッセージまたはシンプル テキストのコレクションが定義されます。

メッセージ カタログは、文書型定義(DTD)で定義された XML ファイルであり、テキスト メッセージを定義します。各カタログでは、システムの一部で使用されるログ メッセージまたはシンプル テキストが定義されます。ユーザは、ロギングのすべての必要条件に対応する 1 つのログ メッセージ カタログを作成するか、サブシステムまたは Java パッケージごとに細かく分けてカタログを作成することができます。BEA では、後者の方法を推奨しています。複数のサブシステムを使用すると、ログを表示するときに特定の部分に焦点を当てることができます。

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

すべてのメッセージと例外は、デフォルトの最上位カタログで定義する必要があります。WLS は、カタログのコレクションと共に配布されます。それらのカタログは、weblogic.jar ファイルの \weblogic\msgcat の中に配置されています。

この章では、メッセージ カタログに関連する以下のトピックについて説明します。

 


メッセージ カタログの種類

weblogic\msgcat ディレクトリには、メッセージ カタログの構文を記述する DTD も格納されています。WLS 配布キットには、以下の 2 つの DTD が含まれています。

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

 


メッセージ引数の挿入

java.text.MessageFormat で規定されているとおり、ログ メッセージのすべてのセクションではメッセージ引数を挿入できます。メッセージでは、0 〜 9 で番号付けされた 10 個までの引数をサポートできます。それらの引数のサブセットを、メッセージ定義のどのテキスト セクションにでも挿入できます。メッセージ引数は開発時にメッセージの定義に挿入され、実行時においてメッセージがログに記録されるときに適切なメッセージ コンテンツに置き換えられます。

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

<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} のかたちでサポートされます。ログ メッセージには、重要度レベルを割り当てなければなりません。ログ メッセージは、method 属性で定義されているとおりに Logger のメソッドによって生成されます。

 


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

メッセージ カタログ ファイルの名前(.xml 拡張子なし)は、Localizer と Logger のクラス名を生成するために使用されます。したがって、名前は慎重に選択する必要があります。たとえば、メッセージ カタログの名前は以下の条件を満たしていなければなりません。

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

メッセージ ID は、通常は先頭に 0 が付く 6 文字の文字列です。一部のインタフェースでは整数表現もサポートされています。

パッケージ名は、特定のカタログが存在するサブシステムの名前と一致している必要があります。

ログの Localizer「クラス」は、実際には ResourceBundle プロパティ ファイルです。

 


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

メッセージ カタログでは、複数のロケールまたは言語がサポートされています。特定のメッセージ カタログには、1 つのデフォルト バージョン(最上位カタログ)と、サポートされているロケールごとに 1 つのカタログが存在します。たとえば、mycat.xml という最上位カタログと ..\ja\mycat.xml というそのカタログの日本語版を使用するかもしれません。通常、最上位カタログは英語ですが、インストールされている WLS のカタログ以外のカタログで英語は必ずしも必要ではありません。

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

 


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

最上位とロケール固有のカタログ ファイルでは、カタログ フォーマットがわずかに異なります。ロケール固有のカタログは、最上位バージョンで定義されているテキストの翻訳だけを備えています。さらに、ログ メッセージ カタログはシンプル テキスト カタログとは異なる方法で定義されます。それらの違いについては、以下の節で説明します。

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

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

message_catalog

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

属性

説明

i18n_package

省略可能。このカタログの生成された Logger クラスを配置する Java パッケージ。クラスの名前はカタログ ファイルの名前に基づいて付けられる。たとえばカタログの名前が mycat.xml の場合、生成される Logger クラスの名前は i18n_package.mycatLogger.class になる。デフォルト値は weblogic.i18n

l10n_package

省略可能。このカタログの生成された LogLocalizer プロパティを配置する Java パッケージ。クラスの名前はカタログ ファイルの名前に基づいて付けられる。たとえばカタログの名前が mycat.xml の場合は、l10n_package.mycatLogLocalizer.properties という名前のプロパティ ファイルが生成される。デフォルト値は weblogic.i18n

subsystem

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

version

必須。使用される msgcat.dtd のバージョンを指定する。書式は n.n であり、たとえば version="1.0" のように定義する。

baseid

省略可能。このカタログで使用される最低のメッセージ ID を指定する。構文は 0 〜 9 を 6 つ並べたもの。WLS カタログのデフォルト値は 000000、ユーザ カタログのデフォルト値は 500000

endid

省略可能。このカタログで使用される最高のメッセージ ID を指定する。構文は 0 〜 9 を 6 つ並べたもの。WLS カタログのデフォルト値は 499999、ユーザ カタログのデフォルト値は 999999。


 

log_message

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

属性

説明

messageid

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

datelastchanged

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

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

severity

必須。ログ メッセージの重要度。「debug」、「info」、「warning」、「notice」、「error」、「critical」、「alert」、または「emergency」のいずれかを指定する。ユーザ カタログで使用できるのは「debug」、「info」、「warning」、および「error」だけ。

stacktrace

省略可能。Throwable の引数としてスタック トレースを生成するかどうかを示す。true または false を指定できる。デフォルト値は true。値が true の場合はトレースが生成される。構文は次のとおり。

stacktrace="true"

method

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

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

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

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

要素

説明

messagebody

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

messagedetail

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

cause

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

action

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


 

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

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

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.weblogic.com/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

省略可能。このカタログの生成された LogLocalizer プロパティを配置する Java パッケージ。クラスの名前はカタログ ファイルの名前に基づいて付けられる。カタログ ファイルの名前が mycat.xml の場合は、l10n_package.mycatLogLocalizer.properties という名前のプロパティ ファイルが生成される。デフォルト値は「weblogic.i18n」。

subsystem

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

version

必須。使用される msgcat.dtd のバージョンを指定する。「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

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

使い方

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

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

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

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.weblogic.com/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>

ロケール固有のカタログのフォーマット

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

たとえば、MyUtilLabels.xml のメッセージのフランス語版は次のディレクトリに格納されます。

...\msgcat\fr\MyUtilLabels.xml

翻訳されたメッセージは次のようになります。

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

messagebodymessagedetailcause、および action の各要素でテキストを入力するときには、有効な UTF-8 文字を生成するツールを使用するとともに、適切なキーボードのマッピングがインストールされている必要があります。MessageLocalizer ユーティリティはそのようなツールの 1 つです。

 

back to top previous page next page