Struts 2 – i18nまたはローカライズの例
異なる言語のメッセージを表示するためのリソースバンドルの使用を示すStruts 2国際化(i18n)、ローカリゼーション(i10n)またはマルチリンガの例この例では、簡単なログイン画面を作成し、リソースバンドルからStruts 2 UIコンポーネントを介してメッセージを表示し、選択した言語オプションのロケールベースを変更します。
ダウンロードする – リンク://wp-content/uploads/2010/06/Struts2-i18-localization-Example.zip[Struts2-i18-localization-Example.zip]
1.プロジェクトの構成
この例のプロジェクト構造
2.プロパティファイル
プロパティーファイルの名前が国指定のコードであることを確認してください。
「非ヨーロッパ」や「英語以外」のような文字では、
native2asciiツール
を使用してコンテンツを常にエンコードする必要があります。
#Global messages global.username = Username global.password = Password global.submit = Submit
-
global
zh
CN.properties **
#Global messages global.username = \u7528\u6237\u540d global.password = \u5bc6\u7801 global.submit=\u63d0\u4ea4
-
global__fr.properties **
#Global messages global.username = Nom d'utilisateur global.password = Mot de passe global.submit = Soumettre
-
global__de.properties **
#Global messages global.username = Benutzername global.password = Kennwort global.submit = Einreichen
Struts 2がどのようにプロパティファイルを自動的に検索するかを理解するには、このリンク://struts2/struts-2-resource-bundle-example/[Struts 2リソースバンドルの例]を読んでください。
3.アクション
2つのアクションクラス
LocaleAction
は基本的に何もしません。
LoginAction
は簡単な検証を行い、
getText()
を介してリソースバンドルからのエラーメッセージを表示します。
-
LocaleAction.java **
package com.mkyong.common.action; import com.opensymphony.xwork2.ActionSupport; public class LocaleAction extends ActionSupport{ //business logic public String execute() { return "SUCCESS"; } }
-
LoginAction.java **
package com.mkyong.user.action; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private String username; private String password; //...getter and setter methods //business logic public String execute() { return "SUCCESS"; } //simple validation public void validate(){ if("".equals(getUsername())){ addFieldError("username", getText("username.required")); } if("".equals(getPassword())){ addFieldError("password", getText("password.required")); } } }
4.ビューページ
テキストボックス、パスワード、および送信UIコンポーネントを含むログインページ。
Struts 2のローカリゼーションをサポートするには、ビューページで
<%@ page contentType = “text/html; charset = UTF-8 ”%>
を宣言しなければなりません。そうしないと、” UTF-8データ “を正しく、特に中国語の文字。
Struts 2中国語ローカライズの問題
についての記事を読んでください。
-
login.jsp **
<%@ page contentType="text/html;charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> </head> <body> <h1>Struts 2 localization example</h1> <s:form action="validateUser" namespace="/user"> <s:textfield key="global.username" name="username"/> <s:password key="global.password" name="password"/> <s:submit key="global.submit" name="submit"/> </s:form> <s:url id="localeEN" namespace="/" action="locale" > <s:param name="request__locale" >en</s:param> </s:url> <s:url id="localezhCN" namespace="/" action="locale" > <s:param name="request__locale" >zh__CN</s:param> </s:url> <s:url id="localeDE" namespace="/" action="locale" > <s:param name="request__locale" >de</s:param> </s:url> <s:url id="localeFR" namespace="/" action="locale" > <s:param name="request__locale" >fr</s:param> </s:url> <s:a href="%{localeEN}" >English</s:a> <s:a href="%{localezhCN}" >Chinese</s:a> <s:a href="%{localeDE}" >German</s:a> <s:a href="%{localeFR}" >France</s:a> </body> </html>
デフォルトのロケールを変更するには、
“request__locale
“パラメータを宣言し、優先言語コードを設定してActionクラスに渡すだけです。 Struts 2では、
struts-default.xml
で宣言された
com.opensymphony.xwork2.interceptor.I18nInterceptor
インターセプタは、Actionクラスをハイジャックし、それに応じてロケールを処理します。
5.リソースバンドルメッセージを表示しますか?
Struts 2では、選択した言語またはロケールでリソース・バンドル・メッセージ・ベースを表示する方法が多数あります。たとえば、
<s:textfield key="global.username" name="username"/> <s:text name="global.username"/> <s:property value="getText('global.username')"/> <s:text name="global.password"/>
Struts 1では、リソースバンドルメッセージを表示するための標準の
bean:message
があります。しかし、Struts 2では、リソースバンドルのメッセージを表示する方法は非常に多くあり(内部の作業が異なっていても)、一見するとかなり混乱します。
基本的に、あなたが何を選択しても、Struts 2はリソースバンドルメッセージを正しく表示します。
6. struts.xml
Struts 2の設定ファイルをすべてリンクしてください。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.custom.i18n.resources" value="global"/> <constant name="struts.devMode" value="true"/> <package name="user" namespace="/user" extends="struts-default"> <action name="login"> <result>pages/login.jsp</result> </action> <action name="validateUser" class="com.mkyong.user.action.LoginAction"> <result name="SUCCESS">pages/welcome.jsp</result> <result name="input">pages/login.jsp</result> </action> </package> <package name="default" namespace="/" extends="struts-default"> <action name="locale" class="com.mkyong.common.action.LocaleAction"> <result name="SUCCESS">user/pages/login.jsp</result> </action> </package> </struts>
7.デモ
http://localhost:8080/Struts2Example/user/login.action
+
http://localhost:8080/Struts2Example/locale.action?request
locale = en__
http://localhost:8080/Struts2Example/locale.action?request
locale = zh
CN
リファレンス
]。//java/java-convert-chinese-character-to-unicode-with-native2ascii/
-
//struts2/struts-2-resource-bundle-example/
-
//struts/struts-internationalization-or-localization-example/