spring 國際化-i18n


i18n(其 來源是英文單詞 internationalization的首末字符i和n,18為中間的字符數)是“國際化”的簡稱。在資訊領域,國際化(i18n)指讓產品(出版 物,軟件,硬件等)無需做大的改變就能夠適應不同的語言和地區的需要。對程序來說,在不修改內部代碼的情況下,能根據不同語言及地區顯示相應的界面。 在全球化的時代,國際化尤為重要,因為產品的潛在用戶可能來自世界的各個角落。通常與i18n相關的還有L10n(“本地化”的簡稱)。<摘自百度 百科http://baike.baidu.com/view/372835.htm?fr=aladdin >

代碼下載

http://pan.baidu.com/s/1sjNQmfF

Maven依賴

<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應用中,國際化的配置比較簡單,下面四步完成國際化的快速配置

第一步,配置messageSource和localeResolver

 

 

<!-- 配置國際化資源文件路徑 -->
<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_*.properties

 

message_en.properties

 

hi=hello
something=The People's Republic of China
Chinese=Chinese
English=English
index=Index
welcome=Welcome
OtherPage=Other Page

message_zh_CN.properties(漢字已轉成unicode碼)

hi=\u4F60\u597D
something=\u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FD
Chinese=\u4E2D\u6587
English=\u82F1\u6587
OtherPage=\u5176\u4ED6\u9875\u9762
index=\u9996\u9875
welcome=\u6B22\u8FCE

第三步,頁面引入spring標簽庫

引入

<%@ 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/  >


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM