Struts2的國際化(二)-利用超連接實現動態加載國際化資源文件

原理:程序是根據Locale來肯定國際化資源文件,所以關鍵之處在於知道 Struts2 框架是如何肯定 Local 對象的 !session

因爲Struts2 使用 i18n 攔截器處理國際化,而且將其註冊在默認的攔截器中,所以,能夠經過閱讀 I18N 攔截器知道。框架

具體肯定 Locale 對象的過程:spa

> Struts2 使用 i18n 攔截器 處理國際化,而且將其註冊在默認的攔截器棧中對象

> i18n攔截器在執行Action方法前,自動查找請求中一個名爲 request_locale 的參數。blog

 若是該參數存在,攔截器就將其做爲參數,轉換成Locale對象,並將其設爲用戶默認的Locale(表明國家/語言環境)。
 並把其設置爲 session 的 WW_TRANS_I18N_LOCALE 屬性資源

> 若 request 沒有名爲request_locale 的參數,則 i18n 攔截器會從 Session 中獲取 WW_TRANS_I18N_LOCALE 的屬性值,
 若該值不爲空,則將該屬性值設置爲瀏覽者的默認Localeio

> 若 session 中的 WW_TRANS_I18N_LOCALE 的屬性值爲空,則從 ActionContext 中獲取 Locale 對象。test

流程圖以下圖所示:原理

 

具體實現: 只須要在超鏈接的後面附着 request_locale 的請求參數, 值是 語言國家 代碼.request

<a href="testI18n.action?request_locale=en_US">English</a>
<a href="testI18n.action?request_locale=zh_CN">中文</a>

> 注意: 超連接必須是一個 Struts2 的請求(通過Action執行), 即便 i18n 攔截器工做!

相關文章
相關標籤/搜索