ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server アプリケーション ロギングのロギング サービス ユーザーズ ガイド
11g リリース 1 (10.3.1)
B55513-01
 

目次
目次

戻る
戻る
 
次へ
次へ
 

C 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;

/**
 * この例では、シンプル メッセージ カタログを使用したアプリケーションを
 * インターナショナライズするさまざまな方法を示す。
 * <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>
 * English(base language)       ../msgcat/Helloworld.xml
 * French                       ../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;
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;
      }
}