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

Struts 從零開始(四):Struts 國際化(i18n)完整實作指南

     編輯:Java 相關知識

什麼是國際化(i18n)?

國際化(Internationalization,縮寫為 i18n——取首尾字母 i 與 n,中間共 18 個字元)是指軟體在不修改程式碼的前提下,能根據使用者的語言與地區自動切換介面文字、日期格式、貨幣符號等資源。隨著全球化發展,支援多語言已成為 Web 應用的基本需求。

Struts 如何支援國際化?

Struts 建立在 Java 平台之上,原生整合了 java.util.Locale、ResourceBundle 等核心類別,並提供 org.apache.struts.util.MessageResources 封裝,讓開發者能以統一 API 存取不同語系的資源檔。核心概念如下:

  • Locale:代表特定語言/國家組合(如 zh_CN、en_US),決定資源檔的選擇依據。
  • ResourceBundle:Java 標準機制,以「鍵/值」對儲存多語言訊息。
  • PropertyResourceBundle:最常見的實作,直接讀取 .properties 文字檔。
  • MessageFormat:支援訊息中插入動態參數({0}、{1}…),解決語序差異問題。
  • MessageResources:Struts 封裝層,可依請求的 Locale 直接取得對應訊息,無需手動切換。

實作步驟:以登入頁面為例

1. 準備預設資源檔

在 WEB-INF/classes 下建立 ApplicationResources.properties(預設語系,通常為英文):

label.username=username
label.password=password
button.submit=submit
button.reset=reset

2. 建立中文資源檔

先寫 UTF-8/Big5 明文檔 ApplicationResources_temp.properties:

label.username=用戶名
label.password=密碼
button.submit=確定
button.reset=重置

再用 JDK native2ascii 轉碼為 Unicode 轉義序列(Struts 1.x 需求):

native2ascii -encoding gbk ApplicationResources_temp.properties ApplicationResources_zh_CN.properties

產出內容範例:

label.username=\u7528\u6237\u540d
label.password=\u5bc6\u7801
button.submit=\u786e\u5b9a
button.reset=\u91cd\u7f6e

3. 建立英文資源檔(選用)

ApplicationResources_en.properties 內容同預設檔,明確指定語系碼。

4. 設定 Struts Resource Bundle

在 struts-config.xml 中宣告:

<message-resources parameter="ApplicationResources" />

Struts 會自動依命名慣例載入 ApplicationResources_zh_CN.properties 等語系檔。

5. JSP 頁面引用資源

<html:form action="/login.do" method="post">
  <bean:message key="label.username"/>
  <html:text property="username" /><html:errors property="username"/>
  <br/>
  <bean:message key="label.password"/>
  <html:password property="userpass" /><html:errors property="userpass"/>
  <br/>
  <input type="submit" value='<bean:message key="button.submit"/>' />
  <input type="reset" value='<bean:message key="button.reset"/>' />
</html:form>

<bean:message> 會自動依使用者瀏覽器語系顯示對應文字。

6. 執行驗證

中文介面 英文介面 切換效果

瀏覽器語系設為中文 → 顯示中文;改為英文 → 自動切換英文,程式碼零修改。

總結與注意事項

  • 國際化關鍵在於「資源外部化」,程式碼只存鍵值,不存死文字。
  • Struts 1.x 需用 native2ascii 轉碼;Struts 2 / 現代框架可直接支援 UTF-8 檔案。
  • 部分元件(如 LookupDispatchAction)對中文鍵值支援有限,需改用英文鍵值搭配資源檔映射。

掌握 Resource Bundle 機制,即可輕鬆打造全球化 Web 應用。

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