使用Spring MVC 配置國際化,用戶可以選擇語言,前臺後臺獲取國際化資源的方法:
config :
spring-mvc.xml
<!-- 國際化 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<!-- 國際化信息所在的文件名 -->
<property name="basename" value="messages" />
<!-- 如果在國際化資源文件中找不到對應代碼的信息,就用這個代碼作爲名稱 -->
<property name="useCodeAsDefaultMessage" value="true" />
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" >
<property name="defaultLocale" value="en" />
</bean>
jsp:
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:message code="key" />
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:message key="key" />
後臺方式:
在方法裏面:
RequestContext context = new RequestContext(request);
String message = context.getMessage("key");
或者使用
//使用 LocaleContextHolder.getLocale() 獲取當前語言
//使用類 繼承 ApplicationContextAware 接口,獲取到 ApplicationContext 對象
//獲取國際化資源文件對象
Map<String, MessageSource> map =ApplicationContext.getBeansOfType(MessageSource.class)
//可以獲取對應的
String value = MessageSource.getMessage(code, args, LocaleContextHolder.getLocale());
用戶修改 語言(以下兩種均可):
1.配置controller,
在對應的方法裏面:
首先 構造一個 Locale 對象,使用 Locale裏面的屬性,或者 new Locale(String language, String country),
然後使用:
RequestContext context = new RequestContext(request);
context.changeLocale(Locale locale);
//或者
LocaleContextHolder.setLocale(Locale locale);
2.配置
<bean id="changeLocale" class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
<property name="interceptors">
<list>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
</list>
</property>
</bean>
然後 訪問controller 的路徑爲:
<a href="/sys/test?locale=zh_CN">中文</a>