spring 國際化i18n配置

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

代碼下載

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

Maven依賴

1
2
3
4
5
6
7
8
9
10
11
<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應用中,國際化的配置比較簡單,下面四步完成國際化的快速配置web

第一步,配置messageSource和localeResolver

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- 配置國際化資源文件路徑 -->
    <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.propertiesspring

1
2
3
4
5
6
7
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碼)數據庫

1
2
3
4
5
6
7
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標籤庫

引入瀏覽器

1
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

使用cookie

1
<spring:message code="welcome"></spring:message>

第四步,切換語言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@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即失效了,沒有達到目的。固然,也能夠保存用戶的語言設置信息到數據庫,用戶登陸以後便可將語言改變成用戶設置的語言。mvc

 

運行效果截圖:app

相關文章
相關標籤/搜索