C TextFormatter Class Reference for WebLogic Server
TextFormatter
classes provide methods for generating localized versions of message text at runtime.- About TextFormatter Classes
TextFormatter
classes are generated byweblogic.i18ngen
from simple message catalogs. These classes provide methods for generating localized versions of message text at run time. - Example of an Application Using a TextFormatter Class
TheTextFormatter
class can be generated from simple message catalogs of your application.
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 run time.
Parent topic: TextFormatter Class Reference for WebLogic Server
Example of an Application Using a TextFormatter Class
TextFormatter
class can be generated from simple message catalogs of your application. The following example shows the TextFormatter
class generated for a simple Hello_World
application:
Example 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/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>
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.
Example 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; /** * 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())); } }
The following listing shows an example of the generated TextFormatter
for the HelloWorld catalog.
Example 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; 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; } }
Parent topic: TextFormatter Class Reference for WebLogic Server