标签:
i18n(其 来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。在资讯领域,国际化(i18n)指让产品(出版 物,软件,硬件等)无需做大的改变就能够适应不同的语言和地区的需要。对程序来说,在不修改内部代码的情况下,能根据不同语言及地区显示相应的界面。 在全球化的时代,国际化尤为重要,因为产品的潜在用户可能来自世界的各个角落。通常与i18n相关的还有L10n(“本地化”的简称)。<摘自百度 百科http://baike.baidu.com/view/372835.htm?fr=aladdin >
http://pan.baidu.com/s/1sjNQmfF
<properties><springframework>4.0.5.RELEASE</springframework></properties><dependencies><!-- Spring web mvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${springframework}</version></dependency></dependencies> |

在Spring应用中,国际化的配置比较简单,下面四步完成国际化的快速配置
<!-- 配置国际化资源文件路径 --><bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"><property name="basename"><!-- 定义消息资源文件的相对路径 --><value>messages/message</value></property></bean><!-- 基于Cookie的本地化解析器 --> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> <property name="cookieMaxAge" value="604800"/> <property name="defaultLocale" value="zh_CN"/> <property name="cookieName" value="Language"></property> </bean><!-- 基于Session的本地化解析器 --><!--<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />--> |
message_en.properties
hi=hellosomething=The People‘s Republic of ChinaChinese=ChineseEnglish=Englishindex=Indexwelcome=WelcomeOtherPage=Other Page |
message_zh_CN.properties(汉字已转成unicode码)
hi=\u4F60\u597Dsomething=\u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FDChinese=\u4E2D\u6587English=\u82F1\u6587OtherPage=\u5176\u4ED6\u9875\u9762index=\u9996\u9875welcome=\u6B22\u8FCE |
引入
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> |
使用
<spring:message code="welcome"></spring:message> |
@Autowired CookieLocaleResolver resolver;//@Autowired SessionLocaleResolver resolver;/** * 语言切换 */@RequestMapping("language")public ModelAndView language(HttpServletRequest request,HttpServletResponse response,String language){language=language.toLowerCase();if(language==null||language.equals("")){return new ModelAndView("redirect:/");}else{if(language.equals("zh_cn")){resolver.setLocale(request, response, Locale.CHINA );}else if(language.equals("en")){resolver.setLocale(request, response, Locale.ENGLISH );}else{resolver.setLocale(request, response, Locale.CHINA );}}return new ModelAndView("redirect:/");} |
已 完成国际化的配置,其中请注意SessionLocaleResolver和CookieLocaleResolver的区别,很显然,通过 Session只能对当前的会话有效,Cookie则对Cookie有效期内的会话都有效。在使用Cookie的时候,需要设置Cookie的过期时间, 否则关闭浏览器之后,Cookie即失效了,没有达到目的。当然,也可以保存用户的语言设置信息到数据库,用户登录之后即可将语言改变成用户设置的语言。
运行效果截图:





<来源:http://www.xdemo.org/spring-i18n/ >
标签:
原文地址:http://www.cnblogs.com/flying607/p/4698949.html