プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic ServerにデプロイされたアプリケーションへのWebLogicロギング・サービスの追加
12c (12.2.1.2.0)
E82882-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;

/**
 * This example shows various ways of internationalizing an application
 * using simple message catalogs.
 * <p>
 * Usage: java examples.i18n.simple.HelloWorld [lang [country]]
 * <p>
 * lang is a 2 character ISO language code. e.g. "en"
 * country is a 2 character ISO country code. e.g. "US"
 * <p>
 * Usage of any of the languages supported by this example presumes
 * the existence of the appropriate OS localization software and character
 * encodings.
 * <p>
 * The example comes with catalogs for English (the default) and  French. 
 * The catalog source is in the following files, and were built 
 * using the catalog editing utility, weblogic.i18ntools.gui.MessageEditor.
 * <p>
 * <pre>
 * English(base language)       ../msgcat/Helloworld.xml
 * French                       ../msgcat/fr/FR/HelloWorld.xml
 * </pre>
 * <p>
 * To build this example run the bld.sh(UNIX) or bld.cmd (NT) scripts from
 * the examples/i18n/simple directory. CLIENT_CLASSES must be set up and
 * needs to be in the classpath when running the example.
 */

public final class HelloWorld {

  public static void main(String[] argv) {
    /*
     * The easiest method for displaying localized text is to 
     * instantiate the generated formatter class for the HelloWorld catalog.
     * This class contains convenience methods that return localized text for
     * each message defined in the catalog.  The class name is
     * the catalog name followed by "TextFormatter". 
     *
     * Typically, you would use the default constructor to obtain 
     * formatting in the current locale. This example uses a locale
     * based on arguments to construct the TextFormatter. 
     */
    Locale lcl;
    if (argv.length == 0) { // default is default locale for JVM
      lcl = Locale.getDefault();
    }
    else {
      String lang = null;
      String country = null;
      //get  the language code
      lang = argv[0];
      if (argv.length >= 2) { // get the country code
        country = argv[1];
      }
      lcl = new Locale(lang,country);
    }
    /*
     * Get formatter in appropriate locale.
     */  
    HelloWorldTextFormatter fmt = new HelloWorldTextFormatter(lcl);
    fmt.setExtendedFormat(true);
    /*
     * Print the text in the current locale.
     */
    System.out.println(fmt.helloWorld());
    /*
     * Alternatively,  text can be accessed and formatted manually. In this
     * case you must obtain the Localizer class for the catalog. The 
     * Localizer class is formed from the l10n_package attribute in the 
     * catalog, the catalog name, and the string "TextLocalizer".
     */
    Localizer l10n = L10nLookup.getLocalizer
      (lcl,"examples.i18n.simple.HelloWorldTextLocalizer");
    System.out.println(l10n.get("HELLO_AGAIN"));
    /*
     * If the message accepts arguments, they can be passed to the
     * method defined for the message.
     */
    System.out.println(fmt.nthHello(3));
    /*
     * If using the manual method, you must manually apply the argument to
     * the text using the MessageFormat class.
     */
    String text = l10n.get("NTH_HELLO");
    Object[] args = {new Integer(4)};
    System.out.println(MessageFormat.format(text,args));
    /*
     * The Localizer class also provides methods for accessing catalog
     * information.
     */
    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;
   // constructors
   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;
      }
 /**
  * This is hello number {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;
      }
 /**
  * Catalog version: {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 Package: {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 Package: {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;
      }
 /**
  * Catalog subsystem: {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;
      }
}