Struts 2 - i18nまたはローカライズの例

Struts 2 – i18nまたはローカライズの例

Struts 2 internationalizing(i18n)、localization(i10n)、またはmulti-linguaの例。異なる言語のメッセージを表示するためのリソースバンドルの使用を示しています。 この例では、単純なログイン画面を作成し、Struts 2 UIコンポーネントを介してリソースバンドルからメッセージを表示し、選択した言語オプションに基づいてロケールを変更します。

1. プロジェクト構造

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

Struts2 localization folder structure

2. プロパティファイル

プロパティファイルの名前が国指定コードであることを確認してください。

一部の「非ヨーロッパ」または「非英語」のような文字では、常にコンテンツをnative2ascii toolでエンコードする必要があります。

global.properties

#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がプロパティファイルを自動的に検索する方法を理解するには、このStruts 2 resource bundle exampleをお読みください。

3. アクション

2つのアクションクラス、LocaleActionは基本的に何もしません、そしてLoginActionは単純な検証を行い、getText()を介してリソースバンドルからのエラーメッセージを表示します。

LocaleAction.java

package com.example.common.action;

import com.opensymphony.xwork2.ActionSupport;

public class LocaleAction extends ActionSupport{

    //business logic
    public String execute() {
        return "SUCCESS";
    }
}

LoginAction.java

package com.example.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 Chinese localization issueに関するこの記事を読んでください。

login.jsp

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>





Struts 2 localization example

en zh_CN de fr English Chinese German France

デフォルトのロケールを変更するには、“request_locale”パラメータを宣言し、優先言語コードを設定して、Actionクラスに渡す必要があります。 Struts 2では、struts-default.xmlで宣言されたcom.opensymphony.xwork2.interceptor.I18nInterceptorインターセプターが、Actionクラスを乗っ取り、それに応じてロケールを処理します。

5. リソースバンドルメッセージを表示しますか?

Struts 2には、選択した言語またはロケールに基づいてリソースバンドルメッセージを表示する多くの方法があります。 たとえば、




Struts 1には、リソースバンドルメッセージを表示するための1つの標準bean:messageがあります。 しかし、Struts 2には、リソースバンドルメッセージを表示するための非常に多くの同等の方法があり(内部の作業が異なる場合でも)、一見するとかなり混乱しています。 基本的に、何を選択しても、Struts 2はリソースバンドルメッセージを正しく表示します。

6. struts.xml

Struts 2構成ファイル、すべて一緒にリンクします。





    
    

    
       
        pages/login.jsp
       
       
        pages/welcome.jsp
        pages/login.jsp
       
    

    
       
        user/pages/login.jsp