バックエンド側でリソース ファイルを読み取る必要がない限り (つまり、Web フロントエンドで直接ではないことを意味します)、どのような状況でも使用しないでくださいResourceBundle.getBundle()。特に、そのサブクラスは使用しないでください。 PropertiesResourceBundle.getBundle()
アプリケーションのタイプ (JSP か JSF か) に応じて、リソースへのアクセス方法が異なります。
単純な JSP の場合は、JSTLと fmt:message タグを使用して、ここのように UI を変換し、StackOverflow で無数の質問を行います (画面の右上隅にある検索エンジンを使用するだけです)。
JSF/Facelets の場合、faces-config.xml で適切な変数を設定し、有効な式言語クエリを使用する必要があります。詳細については、この優れたチュートリアルを参照してください。
元の質問に戻ると、渡すベース名ResourceBundle.getBundle()(自分が何をしているのか本当にわからない限り、サブクラスを使用しないでください) は、アクセス元のクラスのパスに関連しています (つまり、同じである必要があります)。ソース ディレクトリ)。もう一つは、ここで何を渡すかです。リソース ファイル名が messages.properties、messages_de.properties、messages_es_MX.properties などであると仮定すると、単純に baseName に「messages」を入力すると、問題の呼び出しはResourceBundle.getBundle("messages", theLocale);、theLocale がLocaleオブジェクトの場所のようになります。検出されます (JSP の世界では少しトリッキーですが、JSF/Facelets では と同じくらい簡単Locale theLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();です)。それでおしまい。