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

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

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

BEA 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/wls810/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;
    }
    }

 

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