異なる言語のメッセージを表示するためのリソースバンドルの使用を示すStruts 2国際化(i18n)、ローカリゼーション(i10n)またはマルチリンガの例この例では、簡単なログイン画面を作成し、リソースバンドルからStruts 2 UIコンポーネントを介してメッセージを表示し、選択した言語オプションのロケールベースを変更します。

ダウンロードする – リンク://wp-content/uploads/2010/06/Struts2-i18-localization-Example.zip[Struts2-i18-localization-Example.zip]

1.プロジェクトの構成

この例のプロジェクト構造


Struts2ローカリゼーションフォルダ構造、title = "struts2-localization-folder-structure"

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>

リファレンス

]。//java/java-convert-chinese-character-to-unicode-with-native2ascii/

  1. //struts2/struts-2-resource-bundle-example/

  2. //struts/struts-internationalization-or-localization-example/