![]() |
![]() |
|
|
| |
BEA WebLogic Server でのメッセージ カタログの使い方
インターナショナライズするテキストはすべてメッセージ カタログで定義します。各メッセージ カタログでは、ログ メッセージまたはシンプル テキストのコレクションが定義されます。
メッセージ カタログは、文書型定義(DTD)で定義された XML ファイルであり、テキスト メッセージを定義します。各カタログでは、システムの一部で使用されるログ メッセージまたはシンプル テキストが定義されます。ユーザは、ロギングのすべての必要条件に対応する 1 つのログ メッセージ カタログを作成するか、サブシステムまたは Java パッケージごとに細かく分けてカタログを作成することができます。BEA では、後者の方法を推奨しています。複数のサブシステムを使用すると、ログを表示するときに特定の部分に焦点を当てることができます。
シンプル テキストのカタログの場合は、インターナショナライズされるユーティリティごとに 1 つのカタログを作成することをお勧めします。「 BEA WebLogic Server インターナショナライゼーション ツールおよびユーティリティの使い方」で説明されているツールを使用すれば、特定サイト用のメッセージ カタログを作成することができます。
すべてのメッセージと例外は、デフォルトの最上位カタログで定義する必要があります。WLS は、カタログのコレクションと共に配布されます。それらのカタログは、weblogic.jar
ファイルの \weblogic
\msgcat
の中に配置されています。
この章では、メッセージ カタログに関連する以下のトピックについて説明します。
メッセージ カタログの種類
weblogic
\msgcat
ディレクトリには、メッセージ カタログの構文を記述する DTD も格納されています。WLS 配布キットには、以下の 2 つの DTD が含まれています。
msgcat.dtd −
最上位のデフォルト カタログの構文を記述します。このカタログにはロケール固有のカタログにはない情報(メッセージの重要度など)が含まれます。
l10n_msgcat.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
, Stringpath
)"
このメッセージでは、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
要素で定義できる属性について説明します。
log_message
次の表では、log_message
要素で定義できる属性について説明します。
属性 |
説明 |
---|---|
|
必須。このログ メッセージのユニークな識別子。識別子は、すべてのカタログにわたってユニークでなければならない。値は、baseid 属性と endid 属性で定義された範囲で指定する必要がある。これは |
|
省略可能。このメッセージの修正の管理に便利な日付と時刻のスタンプ。日付はカタログで動作するユーティリティによって提供される。構文は次のとおり。
|
|
必須。ログ メッセージの重要度。「debug」、「info」、「warning」、「notice」、「error」、「critical」、「alert」、または「emergency」のいずれかを指定する。ユーザ カタログで使用できるのは「debug」、「info」、「warning」、および「error」だけ。 |
|
省略可能。Throwable の引数としてスタック トレースを生成するかどうかを示す。
|
|
必須。このメッセージをログに記録するためのメソッド シグネチャ。実際には 2 つのメソッドが提供される。ここで指定されるメソッドと Throwable 引数が追加された同様のメソッド 。 構文は標準の Java メソッド シグネチャから修飾子、セミコロン、および拡張子を除いたもの。引数の型には Java プリミティブまたは Java クラスを使用できる。クラスは 引数には有効であればどのような名前でも指定できるが、 |
ログ メッセージ カタログの他の要素
ログ メッセージ カタログの構文
次の例は、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
要素で定義できる属性について説明します。
message
次の表では、message
要素で定義できる属性について説明します。
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>
ロケール固有のカタログのフォーマット
ロケール固有のカタログは、最上位カタログのサブセットです。ロケール固有のカタログは、それらが表すロケールに基づいた名前のサブディレクトリに格納されます。ロケール固有のカタログで有効な要素と属性は以下のとおりです。
locale_message_catalog
要素 −
最上位の定義の message_catalog
と同じです。
message
要素 −
最上位の定義の message
と同じです。
messageid
属性 −
最上位カタログに適用される同じルールに従います。関連する最上位カタログの messageid
と一致しなければなりません。
messagebody
、messagedetail
、cause
、action −
最上位カタログに適用される同じルールに従います。
たとえば、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>
messagebody
、messagedetail
、cause
、および action
の各要素でテキストを入力するときには、有効な UTF-8 文字を生成するツールを使用するとともに、適切なキーボードのマッピングがインストールされている必要があります。MessageLocalizer
ユーティリティはそのようなツールの 1 つです。
![]() |
![]() |
![]() |