FXMLの多言語対応(未解決・暫定対応)

分からないことだらけで全然進まないよ。

FXML便利。
HTML分かる人間からするとSwingだのJFaceだのでかなり面倒な思いをしたGUIの作成がすごく分かりやすくなった。呼び出しもControllerとの結びつけも実にシンプル。

そんな中、次の課題はラベルの文字列。
普通ならこれまた簡単に対応できててResourceBundleを第2引数で渡せば良いようだ。

label.propertiesならこんな感じ。

FXMLLoader.load(getClass().getResource("screen.fxml"),ResourceBundle.getBundle("label")));

FXMLの方はこんな感じで。

<TextField fx:id="cencel" text="%cancelButton" />

参考:

How to load FXML with values from Preferences in JavaFX?

http://stackoverflow.com/questions/10792890/how-to-load-fxml-with-values-from-preferences-in-javafx


何が普通でないかというと、propertiesはnative2asciiが面倒だから自分用にXMLファイルをリソースとして読み込むResourceBundleを作って使っているのです。
ResourceBundleを継承してるから渡すことはできるけど、getBundleをオーバロードしてるメソッドを使いたい。(キーのマッピングを楽にするための小細工が入ってる)
結局やり方が分からなかったから直接リソースのキーを指定して対応している。
あるいはControllerの方でテキストを設定してあげれば問題ないだろう。
ラベルなんかはできればView側でクローズしたいところだが。

FXMLでclassをimportできるから何かやりようはある気がしている。