国際化でGW明けに備える

最近、CROSSFIRE O/R関連の商談が増えてきました。
5月中には、実際にIt-Genesis社がらみで業務で使うのも出てきたし、もっと便利な機能を追加したバージョンが出る可能性も出てきました。

そうすると、やはり、いろいろとバージョン管理が大変になってきそうなのでそのための準備をしています。備えあれば憂いなしです。

まずは、NLSクラスを使って国際化対応をしました。


public class HyperDbUIMessages extends NLS {
private static final String BUNDLE_NAME= "jp.crossfire.hyperdb.editor.UIMessage";//$NON-NLS-1$
static {
NLS.initializeMessages(BUNDLE_NAME, HyperDbUIMessages.class);
}
public static String TABLE_NAME;
public static String COLUMN_NAME;
public static String COLUMN_TYPE;
public static String LENGTH;
public static String PRIMARY;
public static String UNIQUE;
public static String INDEXED;
public static String REFERENCING;
}
というようなNLS派生クラスと、BUNDLE_NAMEで指定したパッケージの場所に、

TABLE_NAME = TABLE NAME
COLUMN_NAME = Column Name
COLUMN_TYPE = Column Type
LENGTH = Length
PRIMARY = This Column is Primary Key
UNIQUE = This Column is Unique
INDEXED = This Column is Indexed
REFERENCING = Referencing column(If this column is FOREIGN KEY)
というように書いた、UIMessage.propertiesを書いておけば自動的にNLS派生クラスのStatic変数の値が対応するプロパティーファイルの中の値に、自動でクラスを読み込むタイミングでセットアップされます。


さらには、UIMessage_ja.propertiesを


TABLE_NAME = \u30c6\u30fc\u30d6\u30eb\u540d
COLUMN_NAME = \u30ab\u30e9\u30e0\u540d
COLUMN_TYPE = \u30ab\u30e9\u30e0\u306e\u578b
LENGTH = \u30ab\u30e9\u30e0\u9577
PRIMARY = \u3053\u306e\u30ab\u30e9\u30e0\u306f\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u304b\u3069\u3046\u304b
UNIQUE = \u3053\u306e\u30ab\u30e9\u30e0\u306f\u30e6\u30cb\u30fc\u30af\u304b\u3069\u3046\u304b
INDEXED = \u3053\u306e\u30ab\u30e9\u30e0\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u3066\u3044\u308b\u304b
REFERENCING = \u53c2\u7167\u3059\u308b\u5916\u90e8\u30c6\u30fc\u30d6\u30eb\u306e\u30ab\u30e9\u30e0(\u3053\u306e\u30ab\u30e9\u30e0\u304c\u5916\u90e8\u30ad\u30fc\u306e\u5834\u5408)

みたいな感じで用意しておけば、OSのロケールがJAの時には、自動的に日本語で表示されます。
これは、かなり便利です。