首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts 2.0 國際化(i18n)完全指南:從資源檔配置到使用者語言切換

     編輯:Java 相關知識

前言:國際化是企業級系統必修課

Struts 1.x 已簡化 i18n 工作,Struts 2.0 在此基礎上更進一步:更靈活的資源檔查找機制、原生支援 EL 表達式、內建語言切換攔截器。

Hello World 國際化範例

配置檔案

  • struts.properties:`struts.custom.i18n.resources=globalMessages` 指定全域資源基底名
  • globalMessages_en_US.properties:`HelloWorld=Hello World!`
  • globalMessages_zh_CN.properties:`HelloWorld=你好,世界!`

視圖頁面

兩種顯示方式輸出相同結果(程式碼區塊 1):

  • <s:text name="HelloWorld" />
  • <s:property value="%{getText('HelloWorld')}" />(利用 EL 簡潔取值)

瀏覽器語言切換測試

  • 預設中文環境 → 顯示「你好,世界!」(圖 1)
  • 瀏覽器語言改為 English (US) → 顯示 "Hello World!"(圖 2)

中文輸出

英文輸出

四層資源檔範圍與查找優先序

Struts 2.0 支援四種層級資源檔,範圍由大到小(圖 3):

資源檔查找順序圖

  1. Action 級:`ActionName_xx_XX.properties`,僅該 Action 可訪問,同名鍵可差異化
  2. 介面/父類級:實作介面或繼承父類的同名資源檔
  3. ModelDriven 級:`getModel()` 回傳物件類型的資源檔
  4. Package 級:`package.properties` 及父包遞迴查找
  5. 全域級:`struts.properties` 指定的基底資源檔

查找順序:Action → 介面 → 父類 → ModelDriven → Package → 全域 → 最後回傳鍵名作為預設值。

參數化國際化訊息

兩種參數語法

  • OGNL 表達式:`validation.require=${getText(fileName)} is required`
  • MessageFormat 格式:`validation.between=Date must between {0, date, short} and {1, date, short}`

兩種參數傳遞方式

  • 標籤屬性:``
  • 巢狀參數:``

使用者自主切換語言:i18n 攔截器實戰

原理

預設註冊的 `i18n` 攔截器檢查請求參數 `request_locale`,實例化 `Locale` 存入 Session 屬性 `WW_TRANS_I18N_LOCALE`,後續請求自動套用。

完整實作

語言選單 Bean(程式碼區塊 2):`Locales.getLocales()` 回傳 `Map`(American English → Locale.US, Simplified Chinese → Locale.CHINA)

語言選擇器片段(`LangSelector.jsp`,程式碼區塊 3):

  • `` 從 Session 讀取目前 Locale
  • `` 實例化 `Locales`
  • `` 綁定語言清單,`name="request_locale"` 觸發攔截器
  • JavaScript `onchange` 自動提交表單
  • 值優先序:Session Locale → ValueStack `locale`(瀏覽器預設)

整合方式

  • 單頁:``
  • 全站:`struts.xml` 通用映射 `/{1}.jsp`

關鍵驗證:必須透過 Action 訪問

直接訪問 JSP(繞過 Filter)→ 攔截器鏈不執行 → 語言切換失效。必須用 `HelloWorld.action` 等 Action 路徑(圖 4-5)。

Action 訪問初始頁面

切換至英文後頁面

推薦工具:Eclipse Properties 編輯器外掛

免 `native2ascii` 編碼,直接編輯中文 Unicode。透過 Software Update 安裝 `https://propedit.sourceforge.jp/eclipse/updates/`,重啟後 `.properties` 檔顯示綠色 P 圖示。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved