SpringMVC國際化支援實現

來源:互聯網
上載者:User

SpringMVC國際化支援實現

這周公司領導希望我對一個項目,出一個國際化的解決方案,研究兩個小時,採用了SpringMVC的國際化支援,在此記錄下。

原理: 在DispatchServlet中註冊localeResolver(地區解析器),並添加Locale攔截器(LocaleChangeInterceptor),來檢測請求中的參數和語言環境的改變。

      在應用上下文中註冊ResourceBundleMessageSource,定義國際化檔案在程式中的路徑和名稱。

1. 語言解析器

  在SpringMVC中,常用的語言解析器有

  Header resolver:通過解析用戶端要求標頭資訊中心的accept-language,來擷取使用者需要的國際化語言。詳見=AcceptHeaderLocaleResolver

  Cookie resolver:通過解析用戶端上Cookie指定的locale,來擷取使用者需要的國際化資訊。詳見=CookieLocaleResolver

  Session resolver:通過解析用戶端請求域中的loacle資訊,來擷取需要的國際化資訊,並儲存在httpSession中。詳見=SessionLocaleResolver

 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
      <property name="defaultLocale" value="en_US" />
 </bean>View Code

2. 地區攔截器

  我們需要在DispatchServlet中註冊監控地區改變的攔截器, 他能協助我們檢測請求參數,根據請求參數對應的語言,更改語言環境。

<mvc:interceptors>
    <bean class="com.xxx.web.interceptor.IhgLocaleChangeInterceptor" />
 </mvc:interceptors>

3.  國際化資源配置

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="defaultEncoding" value="UTF-8" />
    <property name="basename" value="classpath*:/ApplicationMessage" />
    <property name="useCodeAsDefaultMessage" value="true" />
</bean>View Code

4. 頁面國際化

  在這裡,我是用的是jstl的fmt標籤來實現國際化。有興趣的同學也可以使用spring的message標籤。

  1) 引入標籤庫<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

  2) 指定國際化檔案資源名<fmt:setBundle basename="ApplicationMessage" />

  3) 通過國際化資源檔的key,讀取檔案資訊。 <fmt:message key="security.account.number" />

5. 我們在第二步中選擇的是SessionResolver解析器。所以在請求中,我們需要在url的參數後面拼接上locale=具體語言標識(例如:locale=zh_CN)。

注意:在每個頁面都拼接url的話會顯得麻煩,通常使用者會希望能做的,一次選擇語言後,之後都首選這種語言。所以有興趣的同學可考慮,通過擴充LocaleChangeInterceptor,來達到更完善的功能。

本文永久更新連結地址:https://www.bkjia.com/Linux/2018-03/151296.htm

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.