Struts2-현지화, 국제화 (i18n)
국제화 (i18n)는 제품과 서비스를 특정 현지 언어와 문화에 쉽게 적용 할 수 있도록 계획하고 구현하는 프로세스로,이를 로컬라이제이션이라고합니다. 국제화 프로세스를 번역 또는 현지화 지원이라고합니다.
국제화는 축약됩니다. i18n 단어가 문자로 시작하기 때문에 “i” 그리고 끝 “n”, 첫 번째 i와 마지막 n 사이에는 18 개의 문자가 있습니다.
Struts2는 다음 위치에서 리소스 번들, 인터셉터 및 태그 라이브러리를 통해 지역화, 즉 국제화 (i18n) 지원을 제공합니다.
UI 태그
메시지 및 오류.
액션 클래스 내.
리소스 번들
Struts2는 자원 번들을 사용하여 웹 애플리케이션 사용자에게 여러 언어 및 로케일 옵션을 제공합니다. 다른 언어로 페이지를 작성하는 것에 대해 걱정할 필요가 없습니다. 원하는 각 언어에 대한 리소스 번들을 생성하기 만하면됩니다. 리소스 번들에는 사용자 언어로 된 제목, 메시지 및 기타 텍스트가 포함됩니다. 리소스 번들은 애플리케이션의 기본 언어에 대한 키 / 값 쌍이 포함 된 파일입니다.
리소스 파일의 가장 간단한 이름 지정 형식은 다음과 같습니다.
bundlename_language_country.properties
여기, bundlenameActionClass, Interface, SuperClass, Model, Package, Global 리소스 속성이 될 수 있습니다. 다음 부분language_country 국가 로케일을 나타냅니다. 예를 들어 스페인어 (스페인) 로케일은 es_ES로 표시되고 영어 (미국) 로케일은 en_US 등으로 표시됩니다. 여기서 선택적인 국가 부분을 건너 뛸 수 있습니다.
키로 메시지 요소를 참조 할 때 Struts 프레임 워크는 다음 순서로 해당 메시지 번들을 검색합니다.
- ActionClass.properties
- Interface.properties
- SuperClass.properties
- model.properties
- package.properties
- struts.properties
- global.properties
애플리케이션을 여러 언어로 개발하려면 해당 언어 / 로케일에 해당하는 여러 속성 파일을 유지하고 키 / 값 쌍의 관점에서 모든 콘텐츠를 정의해야합니다.
예를 들어, 미국 영어 (기본값), 스페인어 및 프랑스어 용 응용 프로그램을 개발하려는 경우 세 개의 속성 파일을 만들어야합니다. 여기서는global.properties 파일에 한해 다른 속성 파일을 사용하여 다른 유형의 메시지를 분리 할 수도 있습니다.
global.properties − 기본적으로 영어 (미국)가 적용됩니다.
global_fr.properties − 이것은 Franch 로케일에 사용됩니다.
global_es.properties − 이것은 스페인어 로케일에 사용됩니다.
메시지에 액세스
getText, 텍스트 태그, UI 태그의 키 속성 및 i18n 태그를 포함하여 메시지 자원에 액세스하는 여러 방법이 있습니다. 간단히 살펴 보겠습니다.
표시하려면 i18n 문자, 전화 사용 getText 속성 태그 또는 다음과 같은 UI 태그와 같은 다른 태그에서-
<s:property value = "getText('some.key')" />
그만큼 text tag 기본 자원 번들 (예 : struts.properties)에서 메시지를 검색합니다.
<s:text name = "some.key" />
그만큼 i18n tag임의의 리소스 번들을 값 스택에 푸시합니다. i18n 태그 범위 내의 다른 태그는 해당 리소스 번들의 메시지를 표시 할 수 있습니다.
<s:i18n name = "some.package.bundle">
<s:text name = "some.key" />
</s:i18n>
그만큼 key 대부분의 UI 태그의 속성은 리소스 번들에서 메시지를 생성하는 데 사용할 수 있습니다-
<s:textfield key = "some.key" name = "textfieldName"/>
현지화 예
창조를 목표로합시다 index.jsp여러 언어로 이전 장에서. 동일한 파일은 다음과 같이 작성됩니다.
<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Employee Form with Multilingual Support</title>
</head>
<body>
<h1><s:text name = "global.heading"/></h1>
<s:url id = "indexEN" namespace="/" action = "locale" >
<s:param name = "request_locale" >en</s:param>
</s:url>
<s:url id = "indexES" namespace="/" action = "locale" >
<s:param name = "request_locale" >es</s:param>
</s:url>
<s:url id = "indexFR" namespace="/" action = "locale" >
<s:param name = "request_locale" >fr</s:param>
</s:url>
<s:a href="%{indexEN}" >English</s:a>
<s:a href="%{indexES}" >Spanish</s:a>
<s:a href="%{indexFR}" >France</s:a>
<s:form action = "empinfo" method = "post" namespace = "/">
<s:textfield name = "name" key = "global.name" size = "20" />
<s:textfield name = "age" key = "global.age" size = "20" />
<s:submit name = "submit" key = "global.submit" />
</s:form>
</body>
</html>
우리는 만들 것입니다 success.jsp 정의 된 작업이 반환되는 경우 호출 될 파일 SUCCESS.
<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Success</title>
</head>
<body>
<s:property value = "getText('global.success')" />
</body>
</html>
여기에서 다음 두 가지 작업을 만들어야합니다. (a) 첫 번째 조치 a는 로케일을 처리하고 동일한 index.jsp 파일을 다른 언어로 표시합니다. (b) 또 다른 조치는 양식 제출 자체를 처리하는 것입니다. 두 작업 모두 SUCCESS를 반환하지만 두 작업에 대한 목적이 다르기 때문에 반환 값에 따라 다른 작업을 수행합니다.
로케일을 돌보는 조치
package com.tutorialspoint.struts2;
import com.opensymphony.xwork2.ActionSupport;
public class Locale extends ActionSupport {
public String execute() {
return SUCCESS;
}
}
양식 제출 조치
package com.tutorialspoint.struts2;
import com.opensymphony.xwork2.ActionSupport;
public class Employee extends ActionSupport{
private String name;
private int age;
public String execute() {
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
이제 다음 세 가지를 만들어 보겠습니다. global.properties 파일을 넣고 CLASSPATH −
global.properties
global.name = Name
global.age = Age
global.submit = Submit
global.heading = Select Locale
global.success = Successfully authenticated
global_fr.properties
global.name = Nom d'utilisateur
global.age = l'âge
global.submit = Soumettre des
global.heading = Sé lectionnez Local
global.success = Authentifi é avec succès
global_es.properties
global.name = Nombre de usuario
global.age = Edad
global.submit = Presentar
global.heading = seleccionar la configuracion regional
global.success = Autenticado correctamente
우리는 우리의 struts.xml 다음과 같이 두 가지 동작으로-
<?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.devMode" value = "true" />
<constant name = "struts.custom.i18n.resources" value = "global" />
<package name = "helloworld" extends = "struts-default" namespace="/">
<action name = "empinfo"
class = "com.tutorialspoint.struts2.Employee"
method = "execute">
<result name = "input">/index.jsp</result>
<result name = "success">/success.jsp</result>
</action>
<action name = "locale"
class = "com.tutorialspoint.struts2.Locale"
method = "execute">
<result name = "success">/index.jsp</result>
</action>
</package>
</struts>
다음 내용은 web.xml 파일-
<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id = "WebApp_ID" version = "3.0">
<display-name>Struts 2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
이제 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 Export > WAR FileWar 파일을 만듭니다. 그런 다음 Tomcat의 webapps 디렉토리에이 WAR을 배포합니다. 마지막으로 Tomcat 서버를 시작하고 URL에 액세스하십시오.http://localhost:8080/HelloWorldStruts2/index.jsp. 다음 화면이 생성됩니다.
이제 언어 중 하나를 선택하고 Spanish, 다음 결과를 표시합니다-
프랑스어로도 시도 할 수 있습니다. 마지막으로Submit 스페인어 로케일에서 버튼을 누르면 다음 화면이 표시됩니다.
축하합니다. 이제 다국어 웹 페이지가 생겼습니다. 웹 사이트를 전 세계적으로 시작할 수 있습니다.