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

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

 Previous Next Contents Index PDF で侮ヲ  

BEA WebLogic Server 用の TextFormatter クラスのリファレンス

以下の節では、TextFormatter クラスのリファレンス情報を提供します。

注意: この TextFormatter クラスの情報は、通常使用するメソッドのリファレンスとして提供しているものです。通常、ユーザがこのインタフェースを直接使用する必要はありません。

 


TextFormatter クラスの概要

TextFormatter クラスは、i18ngen によってシンプル メッセージ カタログから生成されます。このクラスは、実行時にメッセージ テキストのローカライズ版の生成に使用されるメソッドを提供します。次の節では、アプリケーションとそのシンプル メッセージ カタログ、およびそのカタログに対して生成された TextFormatter クラスの例を示します。

 


TextFormatter クラスを使用したアプリケーションの例

リスト4-3 は、「Hello World」アプリケーションに対するシンプル メッセージ カタログの例を示しています。

コード リスト 4-3 シンプル メッセージ カタログの例

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd" "http://www.bea.com/servers/wls600/msgcat.dtd">
<message_catalog

l10n_package="examples.i18n.simple"

subsystem="I18N"

version="1.0"

>

<message
messageid="HELLO_WORLD"
datelastchanged="967575717875"
method="helloWorld()"
>
<messagebody>
Hello World!
</messagebody>
</message>

<!-- -->
<message
messageid="HELLO_AGAIN"
datelastchanged="967575717804"
method="helloAgain()"
>
<messagebody>
Hello again
</messagebody>
</message>

<!-- -->
<message
messageid="NTH_HELLO"
datelastchanged="967575770971"
method="nthHello(int count)"
>
<messagebody>
This is hello number {0,number}.
</messagebody>
</message>

<!-- -->
<message
messageid="VERSION"
datelastchanged="967578656214"
method="version(String version)"
>
<messagebody>
Catalog version: {0}
</messagebody>
</message>

<!-- -->
<message
messageid="I18N_PACKAGE"
datelastchanged="967578691394"
method="i18nPackage(String pkg)"
>
<messagebody>
I18n Package: {0}
</messagebody>
</message>

<!-- -->
<message
messageid="L10N_PACKAGE"
datelastchanged="967578720156"
method="l10nPackage(String pkg)"
>
<messagebody>
L10n Package: {0}
</messagebody>
</message>

<!-- -->
<message
messageid="SUBSYSTEM"
      datelastchanged="967578755587"
method="subSystem(String sub)"
>
<messagebody>
Catalog subsystem: {0}
</messagebody>
</message>
</message_catalog>

リスト4-4 は、HelloWorld カタログを使用したアプリケーションの例を示しています。

コード リスト 4-4 HelloWorld カタログを使用したアプリケーションの例

package examples.i18n.simple;

import java.util.Locale;
import java.text.MessageFormat;

import weblogic.i18n.Localizer;
import weblogic.i18ntools.L10nLookup;

/**
* @author Copyright (c) 2000 by BEA Systems, Inc. All Rights Reserved.
*/

/**
* この例では、シンプル メッセージ カタログを使用したアプリケーションを
* インターナショナライズするさまざまな方法を示す
* <p>
* 使い方: java examples.i18n.simple.HelloWorld [lang [country]]
* <p>
* lang: 「en」などの 2 文字の ISO 言語コード
* country: 「US」などの 2 文字の ISO 国コード
* <p>
* この例でサポートされている言語を使用する場合、適切な OS
* ローカライゼーション ソフトウェアと文字エンコーディングがあること
* を前提とする
* <p>
* この例では、英語 (デフォルト) とフランス語のカタログが示されている
* カタログ ソースは、以下のファイルにあり、カタログ編集ユーティリティ、
* weblogic.i18ntools.gui.MessageEditor を使用して構築されたものである
* <p>
* <pre>
* 英語 (基本言語) ../msgcat/Helloworld.xml
* フランス語 ../msgcat/fr/FR/HelloWorld.xml
* </pre>
* <p>
* このサンプルを構築するには、examples/i18n/simple ディレクトリから bld.sh(UNIX)
* または bld.cmd (NT) を実行する。このサンプルを実行する場合、CLIENT_CLASSES
* をセットアップし、これをクラスパスに配置する必要がある
*/


public final class HelloWorld {

public static void main(String[] argv) {
/*
* ローカライズされたテキストを表示する最も簡単な方法は、
* 生成された HelloWorld カタログのフォーマッタ クラスをインスタンス化することである
* このクラスには、カタログで定義された各メッセージをローカライズしたテキストを
* 返すコンビニエンス メソッドが入っている。クラス名は、カタログ名に
* 「TextFormatter」を付加した名前になる
*
* 通常、現行ロケールでのフォーマットには、デフォルトの
* コンストラクタを使用する。この例では、引数に基づいたロケールを使用して
* TextFormatter を作成する
*/
Locale lcl;
if (argv.length == 0) { // デフォルトは JVM のデフォルト ロケール
lcl = Locale.getDefault();
}
else {
String lang = null;
String country = null;
// 言語コードを取得
lang = argv[0];
if (argv.length >= 2) { // 国コードを取得
country = argv[1];
}
lcl = new Locale(lang,country);
}
/*
* 適切なロケールによるフォーマッタを取得
     */  
HelloWorldTextFormatter fmt = new HelloWorldTextFormatter(lcl);
fmt.setExtendedFormat(true);
/*
* 現行ロケールでテキストを出力
*/
System.out.println(fmt.helloWorld());
/*
* また、手動でテキストにアクセスし、フォーマットすることもできる。その場合、
* そのカタログの Localizer クラスを取得する必要がある。Localizer クラスは
* カタログの l10n_package 属性、カタログ名、および文字列「TextLocalizer」
* で構成される
*/
Localizer l10n = L10nLookup.getLocalizer
(lcl,"examples.i18n.simple.HelloWorldTextLocalizer");
System.out.println(l10n.get("HELLO_AGAIN"));
/*
* メッセージに引数が入る場合、引数はメッセージに定義された
* メソッドに渡されるだけである
*/
System.out.println(fmt.nthHello(3));
/*
* マニュアル メソッドを使用する場合、MessageFormat クラスを使用して、引数を手動で
* テキストに適用する必要がある
*/
String text = l10n.get("NTH_HELLO");
Object[] args = {new Integer(4)};
System.out.println(MessageFormat.format(text,args));
/*
* また、Localizer クラスは、カタログ情報にアクセスするメソッドも提供する
*/
System.out.println(fmt.version(l10n.getVersion()));
System.out.println(fmt.l10nPackage(l10n.getL10nPackage()));
System.out.println(fmt.i18nPackage(l10n.getI18nPackage()));
System.out.println(fmt.subSystem(l10n.getSubSystem()));
}
}

リスト4-5 は、HelloWorld カタログに対して生成された TextFormatter の例を示しています。

コード リスト 4-5 HelloWorld カタログに対して生成された TextFormatter クラスの例

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd" "http://www.bea.com/servers/wls600/msgcat.dtd">
<message_catalog

l10n_package="examples.i18n.simple"

subsystem="I18N"

version="1.0"

>

<message
messageid="HELLO_WORLD"
datelastchanged="967575717875"
method="helloWorld()"
>
<messagebody>
Hello World!
</messagebody>
</message>

<!-- -->
<message
messageid="HELLO_AGAIN"
datelastchanged="967575717804"
method="helloAgain()"
>
<messagebody>
Hello again
</messagebody>
</message>

<!-- -->
<message
messageid="NTH_HELLO"
datelastchanged="967575770971"
method="nthHello(int count)"
>
<messagebody>
This is hello number {0,number}.
</messagebody>
</message>

<!-- -->
<message
messageid="VERSION"
datelastchanged="967578656214"
method="version(String version)"
>
<messagebody>
Catalog version: {0}
</messagebody>
</message>

<!-- -->
<message
messageid="I18N_PACKAGE"
datelastchanged="967578691394"
method="i18nPackage(String pkg)"
>
<messagebody>
I18n Package: {0}
</messagebody>
</message>

<!-- -->
<message
messageid="L10N_PACKAGE"
datelastchanged="967578720156"
method="l10nPackage(String pkg)"
>
<messagebody>
L10n Package: {0}
</messagebody>
</message>

<!-- -->
<message
messageid="SUBSYSTEM"
datelastchanged="967578755587"
method="subSystem(String sub)"
>
<messagebody>
Catalog subsystem: {0}
</messagebody>
</message>
</message_catalog>

 

Back to Top Previous Next