NLS

とあるプラグインのソースを見ていて、ある要素をCtrl+左クリックしたら、
なぜかプロパティファイルにジャンプしたので、ちょっとちびった。


普通はJavaファイルとかに飛ぶはずなのに、なぜプロパティファイルに
飛ぶんだろーと思って調べていくと、プロパティファイルを読み込んで
保持しておくという枠組みがEclipseに始めから用意されているらしい。


具体的には、日本だとhoge_ja.propertiesだしデフォルトはhoge.propertiesといった
ファイルの内容を、勝手に読み込んでフィールド変数に保持させてくれるようになっている。


この機能を利用するコードは、こんな感じ。


public class HogeMessages extends NLS {

private static final String BUNDLE_NAME= "hoge.foo.messages";
public static String testProp1;

static {
NLS.initializeMessages(BUNDLE_NAME, HogeMessages.class);
}
}

こうしておくと、勝手にロケールを考慮したプロパティファイルを探し、
そのファイルに定義されているtestProp1というキーの値を
フィールド変数testProp1に設定してくれる。


なので、この値を使う際のコードは、このようになる。


HogeMessages.testProp1




で、このtestProp1をCtrl+左クリックすると、
プロパティファイルに飛ぶ仕組みになっているというわけ。
でも、飛び先のプロパティファイルはロケールは考慮されない。


とはいえ、こんなところまで作りこまれているとはなぁ。






んじゃー試しに、、、と思って、フィールドtestProp1の名前をリファクタリングしたら、
さすがにプロパティファイルのキー名までは変わらなかったことはヒミツ。