ナビゲーションをスキップ

アプリケーション ロギングの WebLogic ロギング サービス ユーザーズ ガイド

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

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

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

 


TextFormatter クラスの概要

TextFormatter クラスは、weblogic.i18ngen によってシンプル メッセージ カタログから生成されます。このクラスは、実行時にメッセージ テキストのローカライズ版の生成に使用されるメソッドを提供します。

 


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

Hello_World アプリケーションとそのシンプル メッセージ カタログ、およびそのカタログに対して生成された TextFormatter クラスの例を以下に示します。

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

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

次に、HelloWorld カタログを使用したアプリケーションの例を示します。この例では、シンプル メッセージ カタログを使用したアプリケーションをインターナショナライズするさまざまな方法を示します。

コード リスト C-2 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()));
}
}

次に、HelloWorld カタログに対して生成された TextFormatter の例を示します。

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

package examples.i18n.simple;import java.text.MessageFormat;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import weblogic.i18n.Localizer;
import weblogic.i18ntools.L10nLookup;
/** 
 * Copyright (c) 2002 by BEA Inc. All Rights Reserved.
 * @exclude
 */
public class HelloWorldTextFormatter {
   private Localizer l10n;
   private boolean format=false;
   // コンストラクタ
   public HelloWorldTextFormatter() {
   l10n = L10nLookup.getLocalizer(Locale.getDefault(),    "examples.i18n.simple.HelloWorldTextLocalizer");
   }
   public HelloWorldTextFormatter(Locale l) {
   l10n =    L10nLookup.getLocalizer(l,"examples.i18n.simple.HelloWorldTextLocalizer");
   }
   public static HelloWorldTextFormatter getInstance() {
      return new HelloWorldTextFormatter();
   }
   public static HelloWorldTextFormatter getInstance(Locale l) {
      return new HelloWorldTextFormatter(l);
   }
   public void setExtendedFormat(boolean fmt) {
      format = fmt;
   }
   public boolean getExtendedFormat() { return format;
  /**
   * Hello World!
   */
   public String helloWorld()  {
      String fmt = "";
      String id = "HELLO_WORLD" ;
      String subsystem = "I18N" ;
      Object [] args = { };
      String output = MessageFormat.format(l10n.get(id) , args);
      if (getExtendedFormat()) {
      DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,       DateFormat.LONG);
      fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+"> ";
      }
      return fmt+output;
      }
  /**
   * Hello again
   */
   public String helloAgain()  {
      String fmt = "";
      String id = "HELLO_AGAIN" ;
      String subsystem = "I18N" ;
      Object [] args = { };
      String output = MessageFormat.format(l10n.get(id) , args);
      if (getExtendedFormat()) {
         DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,         DateFormat.LONG);
         fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
      }
      return fmt+output;
      }
 /**
  * hello 番号 {0,number}.
  */
   public String nthHello(int arg0)  {
      String fmt = "";
      String id = "NTH_HELLO" ;
      String subsystem = "I18N" ;
      Object [] args = { new Integer(arg0) };
      String output = MessageFormat.format(l10n.get(id) , args);
      if (getExtendedFormat()) {
         DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,          DateFormat.LONG);
         fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
      }
      return fmt+output;
      }
 /**
  * カタログ バージョン : {0}
  */
   public String version(String arg0)  {
      String fmt = "";
      String id = "VERSION" ;
      String subsystem = "I18N" ;
      Object [] args = { arg0 };
      String output = MessageFormat.format(l10n.get(id) , args);
      if (getExtendedFormat()) {
         DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,          DateFormat.LONG);
         fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
      }
      return fmt+output;
      }
 /**
  * I18n パッケージ : {0}
  */
   public String i18nPackage(String arg0)  {
      String fmt = "";
      String id = "I18N_PACKAGE" ;
      String subsystem = "I18N" ;
      Object [] args = { arg0 };
      String output = MessageFormat.format(l10n.get(id) , args);
      if (getExtendedFormat()) {
         DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,          DateFormat.LONG);
         fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
      }
      return fmt+output;
      }
 /**
  * L10n パッケージ : {0}
  */
   public String l10nPackage(String arg0)  {
      String fmt = "";
      String id = "L10N_PACKAGE" ;
      String subsystem = "I18N" ;
      Object [] args = { arg0 };
      String output = MessageFormat.format(l10n.get(id) , args);
      if (getExtendedFormat()) {
         DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,          DateFormat.LONG);
         fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
      }
      return fmt+output;
      }
 /**
  * カタログ サブシステム : {0}
  */
   public String subSystem(String arg0)  {
      String fmt = "";
      String id = "SUBSYSTEM" ;
      String subsystem = "I18N" ;
      Object [] args = { arg0 };
      String output = MessageFormat.format(l10n.get(id) , args);
      if (getExtendedFormat()) {
         DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,          DateFormat.LONG);
          fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
      }
      return fmt+output;
      }
}

 

フッタのナビゲーションのスキップ  ページの先頭 前 次