Struts 2 - i18n или пример локализации

Struts 2 - i18n или пример локализации

Пример интернационализации Struts 2 (i18n), локализации (i10n) или нескольких языков для демонстрации использования комплекта ресурсов для отображения сообщения на разных языках. В этом примере вы создадите простой экран входа в систему, отобразите сообщение из комплекта ресурсов через компоненты пользовательского интерфейса Struts 2 и измените базовую настройку для выбранного языка.

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 resource bundle example, чтобы понять, как Struts 2 выполняет автоматический поиск файла свойств.

3. действие

Два класса действий,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. Просмотр страницы

Страница входа с текстовым полем, паролем и компонентами пользовательского интерфейса.

Для поддержки локализации 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 перехватчикcom.opensymphony.xwork2.interceptor.I18nInterceptor, объявленный вstruts-default.xml, захватит ваш класс Action и соответствующим образом обработает материал локали.

5. Отобразить сообщение пакета ресурсов?

В Struts 2 существует много способов отображения базы сообщений пакета ресурсов на выбранном языке или локали. Например,




В Struts 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