Oracle® Fusion Middleware Oracle WebLogic ServerにデプロイされたアプリケーションへのWebLogicロギング・サービスの追加 12c (12.2.1.2.0) E82882-01 |
|
前 |
次 |
TextFormatter
クラスは、実行時にメッセージ・テキストのローカライズ版の生成に使用されるメソッドを提供します。
この付録の内容は次のとおりです。
TextFormatter
クラスは、weblogic.i18ngen
によってシンプル・メッセージ・カタログから生成されます。このクラスは、実行時にメッセージ・テキストのローカライズ版の生成に使用されるメソッドを提供します。
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; } }