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

Struts 2 國際化 (i18n) 實戰指南:從配置到頁面動態切換

     編輯:Java 相關知識

Struts 2 內建強大的國際化支援,透過資源屬性檔與標籤庫即可實現頁面多語言動態切換。本文以中英文雙語為例,完整演示配置流程與關鍵細節。

四步驟快速實現

1. 註冊全域資源鍵 (struts.properties)

# 檔案位置:WEB-INF/src/struts.properties
struts.custom.i18n.resources=globalMessages

2. 建立語言屬性檔

檔案名稱編碼處理內容範例
globalMessages_en.properties原文保留firstname=firstname
lastname=lastname
age=age
globalMessages_zh.propertiesnative2ascii 轉 Unicodefirstname=\u59d3
lastname=\u540d
age=\u5e74\u9f84

轉換命令:`%JAVA_HOME%\bin\native2ascii.exe globalMessages_zh.properties > globalMessages_zh.properties`

3. JSP 頁面使用 `` 標籤綁定

<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
  <s:form action="login" method="post">
    <s:textfield name="firstname" label="%{getText('firstname')}" />
    <s:textfield name="lastname" label="%{getText('lastname')}" />
    <s:textfield name="age" label="%{getText('age')}" />
    <s:submit />
  </s:form>
</html>

關鍵語法:`label="%{getText('key')}"` 透過 OGNL 呼叫 `ActionSupport.getText()` 取得當前 Locale 對應資源值。

4. struts.xml 配置 Action (測試用空實現即可)

<action name="login" class="com.example.LoginAction">
  <result>/login.jsp</result>
</action>

瀏覽器語言偏好驗證

IE 語言設定 中文頁面效果 英文語言設定 英文頁面效果

修改 IE「網際網路選項 → 語言 → 依優先順序排列」,將 `zh-TW`/`zh-CN` 或 `en-US` 移至首位,重新整理頁面即可見標籤自動切換語言。

進階技巧與注意事項

  • 編碼一致性:JSP `pageEncoding`、資源檔儲存編碼、瀏覽器解碼需統一 (建議全鏈路 UTF-8)
  • 巢狀資源鍵:`struts.custom.i18n.resources=com.example.messages.global,com.example.messages.form` 支援多資源檔合併
  • Action 內程式化取值:`getText("key")`、`getText("key", new String[] {arg0, arg1})` 支援參數化訊息
  • 區域變數覆蓋:`` 強制切換當前用戶 Locale

常見坑點

  1. 忘記 `native2ascii` 轉換導致中文顯示亂碼
  2. 資源檔命名不符合 `基礎名_語言_國家.properties` 慣例 (如 `globalMessages_zh_TW.properties`)
  3. JSP 未引入 Struts 標籤庫前綴 (`<%@ taglib uri="/struts-tags" prefix="s" %>`)
  4. Action 未繼承 `ActionSupport` 導致 `getText()` 不可用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved