淺談SpringMVC國際化支援,淺談springmvc國際化

來源:互聯網
上載者:User

淺談SpringMVC國際化支援,淺談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>

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>

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,來達到更完善的功能。

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.