Skip navigation.

Internationalization Guide

  Previous Next vertical dots separating previous/next from contents/index/pdf Contents Index View as PDF   Get Adobe Reader

TextFormatter Class Reference for BEA WebLogic Server

The following sections provide reference information for TextFormatter classes:

 


About TextFormatter Classes

TextFormatter classes are generated by weblogic.i18ngen from simple message catalogs. These classes provide methods for generating localized versions of message text at runtime.

 


Example of an Application Using a TextFormatter Class

The following is an example of a Hello_World application, its simple message catalog, and the TextFormatter class generated for the catalog.

Listing C-1 Example of a Simple Message Catalog

<?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>

The following is an example of an application using the HelloWorld catalog. The example shows various ways of internationalizing an application using simple message catalogs.

Listing C-2 Example of an Application Using the HelloWorld Catalog

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.
*/

/**
* 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".
*
* Normally, one would use the default constructor to obtain
* formatting in the current locale. In this example we'll use 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, then they can just be passed to the
* method defined for the message.
*/
System.out.println(fmt.nthHello(3));
/*
* If using the manual method then 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()));
}
}

The following listing shows an example of the generated TextFormatter for the HelloWorld catalog.

Listing C-3 Example of Generated TextFormatter Class for the HelloWorld Catalog

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

 

Skip navigation bar  Back to Top Previous Next