Пример интернационализации или локализации Struts

Пример интернационализации или локализации Struts

Это пример локализации Struts, показывающий базу сообщений или контента на указанном выбранном языке. По умолчанию Struts сохраняет атрибут Locale для каждого пользователя в контексте их сеанса под ключом «org.apache.struts.action.LOCALE», все, что вам нужно сделать, это поиграть с этим атрибутом сеанса.

Загрузите этот пример локализации Struts -Struts-Localization-Example.zip

1. Структура проекта

Это структура проекта.

Struts-localization-folder

2. Файл свойств

Все локализованные сообщения объявляются в файле свойств в формате «filename_locale_code.properties». Вы можете проверить код локали в классеJava.Util.Locale. e.g

  • Английский - Common.properties или Common_en_US.properties

  • Китайский - Common_zh_CN.properties

  • Франция - Common_fr.properties

  • Немецкий - Common_de.properties

Common.properties

#error message
error.common.username.required = Username is required
error.common.password.required = Password is required

#label message
label.common.message = localization example
label.common.username = Username
label.common.password = Password
label.common.button.submit = Submit

Common_de.properties

#error message
error.common.username.required = Benutzername ist erforderlich
error.common.password.required = Passwort ist erforderlich

#label message
label.common.message = Lokalisierung Beispiel
label.common.username = Benutzername
label.common.password = Kennwort
label.common.button.submit = Einreichen

3. Класс действий

Создайте класс действия, который расширяет DispatchAction для нескольких действий.

package com.example.common.action;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.Globals;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

public class LanguageSelectAction extends DispatchAction{

    public ActionForward chinese(ActionMapping mapping,ActionForm form,
        HttpServletRequest request,HttpServletResponse response)
    throws Exception {

        request.getSession().setAttribute(
                Globals.LOCALE_KEY, Locale.SIMPLIFIED_CHINESE);

        return mapping.findForward("success");
    }

    public ActionForward english(ActionMapping mapping,ActionForm form,
        HttpServletRequest request,HttpServletResponse response)
    throws Exception {

        request.getSession().setAttribute(
                Globals.LOCALE_KEY, Locale.ENGLISH);

        return mapping.findForward("success");
    }

    public ActionForward german(ActionMapping mapping,ActionForm form,
        HttpServletRequest request,HttpServletResponse response)
    throws Exception {

        request.getSession().setAttribute(
                Globals.LOCALE_KEY, Locale.GERMAN);

        return mapping.findForward("success");
    }

    public ActionForward france(ActionMapping mapping,ActionForm form,
        HttpServletRequest request,HttpServletResponse response)
    throws Exception {

        request.getSession().setAttribute(
                Globals.LOCALE_KEY, Locale.FRANCE);

        return mapping.findForward("success");
    }

}

4. Форма действия

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

package com.example.common.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

public class UserForm extends ActionForm{

    String username;
    String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public ActionErrors validate(ActionMapping mapping,
        HttpServletRequest request) {

        ActionErrors errors = new ActionErrors();

        if( getUsername() == null || ("".equals(getUsername())))
        {
           errors.add("common.username.err",
            new ActionMessage("error.common.username.required"));
        }

        if( getPassword() == null || ("".equals(getPassword())))
        {
           errors.add("common.password.err",
            new ActionMessage("error.common.password.required"));
        }

        return errors;
    }

    @Override
    public void reset(ActionMapping mapping, HttpServletRequest request) {
        // reset properties
        username = "";
        password = "";
    }
}

5. JSP

Создайте страницу JSP для отображения выбора языка, значения формы, а также сообщения об ошибке. «/Locale.do?method=chinese» будет соответствовать методу DispatchActionchinese().


 +
: +
 +
: +
 +

6. struts-config.xml

Положил все это вместе.






    
        

    

    

        

        
            
        

        
            
        

    

    

7. wel.xml

Интегрируйте среду Struts в файл дескриптора веб-развертывания.




  Maven Struts Examples

  
    action
    
        org.apache.struts.action.ActionServlet
    
    
        config
        
         /WEB-INF/struts-config.xml
        
    
    1
  

  
       action
       *.do
  

Скриншот

Вы можете изменить интерфейс с помощью языковых ссылок.

Английский интерфейс

Struts-localization-english

Китайский интерфейс

Struts-localization-chinese

Франция интерфейс

Struts-localization-france

Немецкий интерфейс

Struts-localization-german