2011-07-06 24 views
0

シンプルなWebアプリケーションで実装するのが難しいと感じました。 私はl10n.propertiesファイルをルートWEB-INFの下に置いていますが、私はそれらをどのように読むことができるのか分かりません。 私はPropertiesResourceBundle.getBundle(baseName、locale)を使用しましたが、私はbaseNameのために何を書かなければならないのか分かりません。 私はクラスパスにローカルファイルを置く必要があるいくつかのスレッドを読んで:それは正しいですか? JDeveloperのクラスパスはどこで設定できますか?事前JDeveloperと国際化

答えて

0

おかげで、あなたは、バックエンド側のリソースファイルを読む必要がない限り(つまり、あなたのWebフロントエンドに直接ではないこと)、あなたは、どのような状況の下でResourceBundle.getBundle()を使うべきではありませんし、特にPropertiesResourceBundle.getBundle()であり、これはそのサブクラスである。

アプリケーションのタイプ(JSPかJSFか)に応じて、リソースに別々にアクセスします。
単純なJSPの場合、hereのようにUIを変換するにはJSTLとfmt:messageタグを使用し、StackOverflowの質問は数多くあります(画面の右上に検索エンジンを使用するだけです)。
JSF/Faceletsの場合、faces-config.xmlに適切な変数を設定し、有効な式言語クエリを使用するだけです。その詳細はthis excellent tutorialにあります。

戻るあなたの元の質問に、あなたはResourceBundle.getBundle()に渡すベース名は(あなたが本当にあなたが何をしているか知っている限りサブクラスを使用してないでください)あなたは(からそれをアクセスしているクラスのパスに関連していますつまり、同じソースディレクトリにする必要があります)。もう一つは、ここで何を渡すかです。あなたのリソースファイル名がmessages.properties、messages_de.properties、messages_es_MX.propertiesのようなものであると仮定すると、単にbaseNameに "messages"を入れると、問題の呼び出しはResourceBundle.getBundle("messages", theLocale);のようになります。ここでtheLocaleはLocaleオブジェクトです1つを検出する必要があります(JSPの世界では少し難しいですが、JSF/FaceletsではLocale theLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();という単純なものです)。それでおしまい。