时间:2021-07-01 10:21:17 帮助过:36人阅读
在webapp下建立文件夹language,在其中再添加file,命名分别为language.properties,language_en.properties,language_zh_CN.properties。其中language.properties为默认资源文件。
在其中添加内容,格式如下:
language.properties
welcome=Welcome
language_en.properties
welcome=Welcome
language_zh_CN.properties
welcome=\u6b22\u8fce
其中welcome为key,在jsp中调用使用的就是这个,汉语的需要使用unicode编码(在eclipse的properties文件中输入汉语会自动转换成unicode。\u6b22\u8fce-欢迎)
在demo-servlet.xml中添加如下
- <mvc:interceptors> <!-- Changes the locale when a 'locale' request parameter is sent; e.g. /?locale=de --> <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean></mvc:interceptors><!-- Saves a locale change using a session--><bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"><!-- 国际化文件 --><bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="/language/language"> <property name="defaultEncoding" value="UTF-8"></property></property></bean></bean>
其中
在jsp文件头添加
- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>
在jsp HTML显示内容处将内容更改,如
- Welcome
更改为
- <spring:message code="welcome"></spring:message>
或
- <input type="text" value="welcome">
更改为
- <input type="text" value="<spring:message code="welcome"/>">
在jsp文件头中添加
- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>
将
- $.messager.alert('info');
更改为
- $.messager.alert('<spring:message code="message.info">');</spring:message>
注意:1.
2.在_en文件中key的值不可以使用\或'符号。
在controller中使用
- if(!model.containsAttribute("contentModel")){ RequestContext requestContext = new RequestContext(request); String welcome = requestContext.getMessage("welcome");}
其中request为HttpServletRequest,model为Model。
完成了上面的步骤之后,会发现XCenter界面中输入汉语,点击确定,往数据库中写入汉语时,写入的是乱码。
解决办法如下:
在applicationContext.xml中的
- <property name="url" value="${jdbc.url}"></property>
更改为
- <property name="url" value="${jdbc.url}?useUnicode=true&characterEncoding=UTF-8"></property>
注意:不要在jdbc.properties中的jdbc.url=jdbc:mysql://localhost:3306/demo之后添加?useUnicode=true&characterEncoding=UTF-8,这样是不正确的。
接下来发现在大部分界面因为添加了这句
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
可以正常显示中文了,但是XCenter部分界面中文显示为???,经过检查发现是因为在controller中返回值为String,而且标记为@ResponseBody,查资料发现是因为Spring MVC中@ResponseBody默认编码是ISO-8859-1(其他的都是UTF-8,谁知道为什么同一个框架中这里要用另外一种编码)。
解决办法:
在
- @RequestMapping(value = "welcome", method = RequestMethod.POST)
中添加produces = "application/json; charset=utf-8"
变成
- @RequestMapping(value = "welcome", method = RequestMethod.POST, produces = "application/json; charset=utf-8")
然后会发现在部分的tree中中文仍然显示为乱码,发现是因为返回值转换成JSON格式的原因。
解决办法:
tree的返回值格式化将
- JSON.toJSONStringWithDateFormat(rs.getDefaultModel(), "yyyy-MM-dd HH:mm:ss");
更改为
- JSON.toJSONString(rs.getDefaultModel());
这个比较简单,使用如下代码就行
- English简体中文
easyui中有些框架(如datagrid)有些内容是框架自带的,需要在中加入
那如何切换中英文呢
首先不要在中添加上面这句,然后在主界面中加入如下js语句
这是使用jquery加载js文件。
接下来将项目中需要替换的内容全部用步骤3中的方法替换就行了,这样国际化就完成了。