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

Struts 2 國際化(i18n)完整配置指南:資源文件、標籤使用、動態切換語言

     編輯:Java 綜合教學

Struts 2 國際化(i18n)完整配置指南:資源文件、標籤使用、動態切換語言

Struts 2 內建強大的國際化支援,基於 ResourceBundle 機制,結合攔截器實現請求級別的語言環境切換。本文詳細說明三種資源文件作用域、JSP/Action 中使用、前端中英文動態切換完整實現。

1. 三種資源文件作用域與命名規則

作用域命名格式放置位置生效範圍
Action 級ActionName_zh_CN.propertiesAction 類同包目錄僅該 Action
包級package_zh_CN.properties包根目錄(src 下對應包)該包下所有 Action
全局級baseName_zh_CN.propertiessrc 根目錄整個應用

優先級: Action 級 > 包級 > 全局級(同 key 時優先使用優先級高者)。

2. 實戰:配置中英文資源文件

步驟一:建立全局資源文件(src 根目錄)

# resource_zh_CN.properties
login.title=用戶登錄
login.username=用戶名
login.psd=密碼
login.submit=登錄
login.welcome=歡迎 {0}

# resource_en_US.properties
login.title=User Login
login.username=Username
login.psd=Password
login.submit=Login
login.welcome=Welcome {0}

中文資源文件 英文資源文件

步驟二:配置 struts.properties 指定基礎名稱

# struts.properties (src 根目錄)
struts.custom.i18n.resources=resource

struts.properties 配置

3. JSP 中使用國際化標籤

<%@ taglib prefix="s" uri="/struts-tags" %>

<!-- 直接輸出文本 -->
<s:text name="login.title" />

<!-- 表單欄位自動取 label -->
<s:textfield name="username" key="login.username" />
<s:password name="psd" key="login.psd" />
<s:submit key="login.submit" />

<!-- 帶參數訊息:login.welcome=歡迎 {0} -->
<s:text name="login.welcome">
    <s:param><s:property value="username" /></s:param>
</s:text>

4. Action 中程式化獲取國際化文本

public class LoginAction extends ActionSupport {
    public String execute() {
        // 簡單文本
        String title = getText("login.title");
        
        // 帶參數文本
        String welcome = getText("login.welcome", new String[]{"張三"});
        // welcome = "歡迎 張三"
        return SUCCESS;
    }
}

5. 實現前端中英文動態切換

index.jsp:語言切換連結

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

<s:form id="loginform" action="login" method="post">
    <s:textfield name="username" key="login.username" />
    <s:password name="psd" key="login.psd" />
    <s:submit key="login.submit" />
</s:form>

struts.xml:語言切換 Action

<action name="lang" class="com.example.action.HelloAction">
    <result name="success">/index.jsp</result>
</action>

HelloAction 僅需返回 SUCCESS,實際切換由 i18n 攔截器(defaultStack 內建)自動處理:讀取 request_locale 參數,設置 ActionContext.getContext().setLocale()。

效果展示

中文界面 英文界面

6. 進階:佔位符參數化

資源文件:error.msg=操作失敗:{0},錯誤碼:{1}

<!-- JSP -->
<s:text name="error.msg">
    <s:param>資料庫連接超時</s:param>
    <s:param>500</s:param>
</s:text>

<!-- Action -->
getText("error.msg", new String[]{"資料庫連接超時", "500"});

7. 總結

  • 資源文件命名規範是關鍵:基礎名_語言_國家.properties
  • struts.custom.i18n.resources 指定全局基礎名
  • JSP 用 <s:text>、key 屬性;Action 用 getText()
  • 語言切換靠 request_locale 參數 + i18n 攔截器,無需手寫邏輯

Struts 2 國際化機制簡單易用,適合中小型專案快速實現多語言支援。

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