「Spring MVC」MessageSourceを使ってページの国際化を実装する
1.properties の設定
Messages_ja.properties(日本語ロケール)
username=山田 profile=大学:{0} 出身:{1}
Messages_en.properties(英語ロケール)
username=yamada profile= school:{0} hometown:{1}
2.applicationContext.xmlの設定
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="/WEB-INF/Messages" /> </bean>
「WEB-INF」フォルダの「MessageRes.properties」を指定します
「ReloadableResourceBundleMessageSource」クラス指定されたベース名を使用してリソースバンドルにアクセスし、Spring ApplicationContext のリソースロードに参加する、
Spring 固有の MessageSource 実装。
3.コントローラ側(CftController.java)
package com.arkgame.study; import static org.springframework.web.bind.annotation.RequestMethod.GET; import java.util.Locale; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class CftController { @Autowired MessageSource mgs; //DIの設定 @RequestMapping(value = "/", method = GET) public String info(Locale locale) { String[] strArr = { "東京大学", "大阪" }; //メッセージファイルのキーを指定 System.out.println(mgs.getMessage("username", null, locale)); //パラメータを指定 System.out.println(mgs.getMessage("profile", strArr, locale)); return "cft"; } }
メッセージを取得したい Java クラスで、MessageSource をプロパティとして定義します。そして @Autowired を付けて、Spring に設定(DI)します。
4.JSP側cft.jsp
<div> <spring:message code="username" /> <br /> <spring:message code="profile" arguments="東京大学,大阪" /> </div>