![]() ![]() ![]() ![]() |
以下の節では、TextFormatter
クラスのリファレンス情報を提供します。
TextFormatter
クラスは、weblogic.i18ngen
によってシンプル メッセージ カタログから生成されます。このクラスは、実行時にメッセージ テキストのローカライズ版の生成に使用されるメソッドを提供します。
Hello_World
アプリケーションとそのシンプル メッセージ カタログ、およびそのカタログに対して生成された TextFormatter
クラスの例を以下に示します。
<?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 カタログを使用したアプリケーションの例を示します。この例では、シンプル メッセージ カタログを使用したアプリケーションをインターナショナライズするさまざまな方法を示します。
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>
* English(base language) ../msgcat/Helloworld.xml
* French ../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
の例を示します。
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;
}
}
![]() ![]() ![]() |