アプリ版:「スタンプのみでお礼する」機能のリリースについて

多言語対応としてリソースファイルを使用したいと四苦八苦しています。

bundle.jsp
--
<%@ page contentType="text/html; charset=Shift_JIS" import="java.util.*" %>
<%
Locale objLcl=request.getLocale();
if(objLcl==null){objLcl=Locale.ENGLISH;}
ResourceBundle objRb=ResourceBundle.getBundle("rs",objLcl);
out.print(objRb.getString("sample.title"));
%>
--


rs.properties
--
sample.title=This is English screen.
--

上記の2ファイルを作成し、rs.propertiesは WEB-INF/classes配下に置きました。
ブラウザからbundle.jspにアクセスすると下記のようなエラーが出ます。

java.util.MissingResourceException: Can't find bundle for base name rs, locale en_US
※ブラウザの言語はen_USにしてあります。

リソースファイルを認識していないと思うのですが、何か設定がいるのでしょうか?
ただ、置くだけでは駄目なのでしょうか?

A 回答 (1件)

実際に手元で動作確認していないので推測ですが・・。



rs.propertiesファイルだけがある、という状態なわけですね。これはデフォルトのリソースになりますね。
 エラーメッセージはlocale en_USのリソースが見つからない、ということのようなので、getBundleした際に指定のロケールに対応するリソースファイルが見つからない、ということじゃないでしょうか。
 rs_en_US.properties(rs_en.propertiesでもいいと思いますが)というファイルを同じ場所に用意したらどうなりますか? これで取得できると思うんですが。

あるいは、インスタンス取得を単にResourceBundle.getBundle("rs");としてデフォルトのロケールで取得した場合はどうなるでしょう? これでデフォルトのリソースから取得できると思うんですが。
    • good
    • 1
この回答へのお礼

アドバイス有難うございます。

rs_en_US.properties
ResourceBundle.getBundle("rs");

の両方を試してみましたが、結果は同じ「java.util.MissingResourceException」でした。

リソースファイルのパスとして「WEB-INF/classes」を見ていない、どこか別の場所を見ているように思います。

どこを見ているのか、そのパスはどこで指定しているのか。
それが分かれば助かるのですが。

お礼日時:2005/05/23 13:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!