2012-03-29 10 views
9

Javaの.propertiesファイルをJava EE(Tomcat)アプリケーションで使用できるクラスにコンパイルするツールはありますか? Androidプラグインが静的なR.stringsクラスを生成するアンドロイドに似ています。Java:静的な文字列のローカライゼーション

私はこの記事が見つかりました:

http://www.techhui.com/profiles/blogs/localization-in-gwt-using

をしかし、それはGWTに依存しています。どんな助けもありがたい。

+0

少し説明できますか?定数を含むクラス(列挙型のようなもの)を意味するのでしょうか? – questzen

+0

この投稿はあなたが尋ねているものと非常によく似ています:http://stackoverflow.com/questions/1578026/java-properties-files-as-strongly-typed-classes –

答えて

4

私はそのようなツールについて聞いたことがありません。 GWTは優れた遅延バインディングベースのテクニックを持っていますが、それはあなたが探しているものではありません。しかし、このようなタスクのための基本的なコードジェネレーターを実装することは可能だと思います。

あなたの質問に対する答えは、私が知る限り、そこにはありません。

+0

+1小さなJavaアプリケーションを使用してコードを生成するには、 eclipseで自動的に呼び出されたビルダーとして追加できるantタスクから自動的に呼び出すことができます。 – jabal

0

ResourceBundleはどうですか?

// refers to "src/config.properties" 
ResourceBundle config = ResourceBundle.getBundle("config"); 
String property1 = config.getString("property1"); 
+1

この質問に対する他の最近の回答と同様に、これはこの質問に答えません。あなたが説明したことは、それが通常どのように行われているかです。しかし、アンドロイドでは、すべてのリソースをコンパイル時に生成したクラス(R.id)を取得します。 property1が定義されていない場合は、ここでruntimeexceptionを取得します。 Androidで定義されていない場合は、コンパイル時にエラーが発生します。 – jontro

0

私は1つだけでコンパイル手順の前にJavaソースを生成するカスタムMavenプラグイン(またはAntタスク)にANTLRを使用してプロパティファイルのための非常にシンプルな文法を書くことができると思います。

0

プロパティをJSONファイルに保存する方法はありますか。ファイルに格納されているJSONオブジェクトはJavaクラスにマップし、Jacksonマッパーを使用して逆シリアル化します。 Jacksonを使用すると、すべてのフィールドがデシリアライズ時にnullでなくてはならないことを強制できます。 また、GSONを使用して、必要に応じて厳密なチェックを実行するカスタムデシリアライザを作成することもできます。例 - 文字列に対して空ではなくNULLを指定しないでください。

0

Compiler Assisted Localization (CAL10N)あなたが尋ねたのとまったく同じではありませんが、助けになるかもしれません。

.propertiesからJavaクラスを生成しませんが、メッセージキーとしてenumsを使用することは、コンパイラの助けを借りて、文字列よりも優れています。

enumを宣言し、アノテーションを付けて.propertiesにバインドし、メッセージルックアップにenum値を使用します。私はまだそれを試していない。 manualを参照してください。

1

アプリケーションを国際化するには、Message Compilerを実装しました。リソースバンドルファイルと定数定義を、単一のソースファイルからキー用のJava enumまたは静的最終文字列として作成します。したがって、定数はJavaソースコードで使用できます。これは、プレーンな文字列を使用するよりはるかに安全です。この場合、存在しないキー定数を使用すると、コンパイル時エラーが発生します。メッセージコンパイラは、Java用にのみ使用できません。 Objective-CまたはSwiftのリソースファイルと定数も作成され、他のプログラミング環境用にも拡張できます。

関連する問題