您的位置:首页 > 编程语言 > Java开发

java系统国际化的配置

2013-08-28 16:30 274 查看
本代码来源于开源MyExam系统

首先写好资源文件:

message_en_US.properties

等等

springmvc-servlet.xml文件

<!-- 国际化操作拦截器 -->

<beanid="messageSource"class="org.springframework.context.support.ResourceBundleMessageSource">
<propertyname="basename"value="message"/>
<propertyname="useCodeAsDefaultMessage"value="true"/>
</bean>
<beanid="localeChangeInterceptor"class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">

<propertyname="paramName"value="siteLanguage"/>
</bean>

<beanid="localeResolver"class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>

<beanclass="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"p:order="1">
<propertyname="interceptors"ref="localeChangeInterceptor"/>
</bean>
<beanclass="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"p:order="2">
<propertyname="interceptors"ref="localeChangeInterceptor"/>
</bean>

说明:该文件配置了springmvc自带的动态国际化,可以去网站搜索相关更多的信息,下面配置js文件国际化,加载个过滤器

Web.xml文件

<filter>
<filter-name>I18nFilter</filter-name>
<filter-class>com.exam.filter.I18nFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>I18nFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>解析说明:

com.exam.filter.I18nFilte类代码:

package com.exam.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import
java.util.Enumeration;
import java.util.Properties;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import org.springframework.web.servlet.mvc.AbstractController;

public
class
I18n extendsAbstractController{
protected ModelAndView handleRequestInternal(HttpServletRequestarg0,HttpServletResponse arg1)throws IOException, IllegalArgumentException,
IllegalAccessException{
Propertiesprop = newProperties();
InputStreamin = getClass().getResourceAsStream("/message_en_US.properties");
prop.load(in);

ArrayList<String>i18nList=newArrayList<String>();

Enumeration<String>enu =(Enumeration<String>)prop.propertyNames();
while (enu.hasMoreElements()){
Stringkey = enu.nextElement();
i18nList.add(key);
}
HttpSessionsession =arg0.getSession();
session.setAttribute("i18nList",i18nList);

ModelAndViewmodel=newModelAndView();
//model.addObject("i18nList",i18nList);
return model;

}
}
header.jsp
<div style="display:none" id="i18nDiv">

<c:forEach var="i18n" items="${i18n}" varStatus="step">

<input id="${i18n}" name="${i18n}" value="<fmt:message key="${i18n}"/>"/>

</c:forEach>

</div>

前台使用

1. jsp页面用jstl国际化标签输出:<fmt:messagekey="system.site"/>

2. js文件:$(“# system.site”).val()

大家可以下载源代码,慢慢研究吧

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: