簡單實現SpringMVC資源國際化
阿新 • • 發佈:2019-01-07
資源國際化
1.java在國際化方面的支援是很強大的,有locate類,可以獲取language,country,variant,可以通過Locate.getDefault獲取使用者計算機的語言區域
2.java.util.ResourceBundle可以使你輕鬆的選擇和讀取特定使用者語言區域的屬性,ResourceBundle是一個抽象類,但是提供了getBundle的方法放回一個具體子類的例項,它有
一個基準名,可以是任意名稱,但是這個名最好必須包括基準面,後面接下劃線,語言碼(如zh)下劃線,國家碼(如CN);
SpringMVC資源國際化
但是在SpringMVC中,不直接使用ResourceBundle,而是利用訊息源類告訴MVC要將屬性檔案儲存在哪裡:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/proper/message"></property>
</bean>
ReloadableResourceBundleMessageSource,我在這裡稱為資源管理器,需要給其配置一個basename引數,指定一個路徑包括資原始檔的基準名
比如我的工程:
資料是以key-value形式
同時我們利用一個語言區域解析器Bean
<bean id="ahr" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver"></bean>
AcceptHeaderLocaleResolver 初始化後會判斷使用者瀏覽器的語言偏好,2者結合後即可實現資源國際化
AcceptHeaderLocaleResolver還有與其作用相當的2個類,如圖中session和cookie開頭的2個類
最後使用message標籤就可以實現訊息的輸出了!
1.java在國際化方面的支援是很強大的,有locate類,可以獲取language,country,variant,可以通過Locate.getDefault獲取使用者計算機的語言區域
2.java.util.ResourceBundle可以使你輕鬆的選擇和讀取特定使用者語言區域的屬性,ResourceBundle是一個抽象類,但是提供了getBundle的方法放回一個具體子類的例項,它有
一個基準名,可以是任意名稱,但是這個名最好必須包括基準面,後面接下劃線,語言碼(如zh)下劃線,國家碼(如CN);
SpringMVC資源國際化
但是在SpringMVC中,不直接使用ResourceBundle,而是利用訊息源類告訴MVC要將屬性檔案儲存在哪裡:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/proper/message"></property>
</bean>
ReloadableResourceBundleMessageSource,我在這裡稱為資源管理器,需要給其配置一個basename引數,指定一個路徑包括資原始檔的基準名
比如我的工程:
資料是以key-value形式
同時我們利用一個語言區域解析器Bean
<bean id="ahr" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver"></bean>
AcceptHeaderLocaleResolver 初始化後會判斷使用者瀏覽器的語言偏好,2者結合後即可實現資源國際化
AcceptHeaderLocaleResolver還有與其作用相當的2個類,如圖中session和cookie開頭的2個類
最後使用message標籤就可以實現訊息的輸出了!
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>