1

私たちは、国際化のためのバンドルを使用して、Java で書かれたソフトウェアを開発するチームです。Javaコードに記述されたすべてのキーがリソースバンドルに含まれているかどうかを確認できる分析ツールを探しています。

これは、キーを識別するのがいかに難しいかについての例です:

Locale locale = new Locale("en", "EN");
ResourceBundle bundle = ResourceBundle.getBundle("MyBundle", locale);

// This is easy to check if the keys are written like this into the Java code.

String myString = bundle.getString("MyKey");

// It's also easy to check this kind of keys

String string1 = "MyKey1";
String string2 = string1;
myString = bundle.getString(string2);


// But it's very hard to check theses keys 

String string3 = "MyKey2";
String string4 = string3.toLowerCase();
myString = bundle.getString(string4) 

// This one too

String string5 = myfunction();
myString = bundle.getString(string5);

ツールや Netbeans のプラグインにお金を払うことができますが、オープン ソースの方が優れています。ところで、このツールは、バンドル内の未使用のキーを見つけるためにも使用できます。

4

1 に答える 1

0

指定したキーがリソース ファイルにない場合、getString(String key)メソッドは をスローしMissingResourceExceptionます。

Java コードにあるすべてのキーがリソース バンドルに存在するかどうかを確認するには、それらすべてを配列にラップし、それを走査して、getString(String key)メソッドが例外をスローするかどうかをそれぞれ確認することをお勧めします。

String[] keys = new String[]{"key1", "key2"...}; 
for (String key : keys) {
    try {
       String value = bundle.getString(key);
       System.out.println("Key = " + key + "; Value = " + value);
    } catch (MissingResourceException e) {
       System.err.println("No value is found for key = " + key);
    }
}
于 2013-05-22T09:11:27.247 に答える