global.name = Name global.age = Age global.telephone = Telephone global.email = Email global.submit = Submit global.success = Employee Successfully Added global.form = Employee Formglobal_hn.properties:
global.name = \u0928\u093E\u092E global.age = \u0909\u092E\u094D\u0930 global.telephone = \u091F\u0947\u0932\u0940\u092B\u094B\u0928 global.email = \u0908\u092E\u0947\u0932 global.submit = \u092A\u094D\u0930\u0938\u094D\u0924\u0941\u0924 \u0915\u0930\u0928\u093E global.success = \u0915\u0930\u094D\u092E\u091A\u093E\u0930\u0940 \u0938\u092B\u0932\u0924\u093E\u092A\u0942\u0930\u094D\u0935\u0915 \u091C\u094B\u0921\u093C\u093E \u0917\u092F\u093E global.form = \u0915\u0930\u094D\u092E\u091A\u093E\u0930\u0940 \u092A\u0930\u094D\u091A\u093Eglobal_de.properties:
global.name = Nennen global.age = Alter global.submit = Einreichen global.form = Angestellter Formular global.telephone = Telefonieren global.email = Emaeiln global.success = Mitarbeiter erfolgreich amglobal_es.properties:
global.name = Nombre de usuario global.age = Edad global.telephone = Teléfono global.email = Emaile global.submit = Presentar global.form = Formulario Empleado global.success = Empleado con éxito Agregadoglobal_fr.properties:
global.name = Nom d'utilisateur global.age = l'âge global.telephone = téléphone global.email = Emailé global.submit = Soumettre des global.form = Formulaire d'employés global.success = Employé ajouté avec succèsglobal_zh_CN.properties:
global.name = \u540D global.age =\u5E74\u9F84 global.telephone = \u7535\u8BDD global.email = \u7535\u5B50\u90AE\u4EF6 global.submit=\u63d0\u4ea4 global.form = \u5458\u5DE5\u8868\u5355 global.success = \u5458\u5DE5\u6210\u529F\u6DFB\u52A0
<s:property value="getText('some.key')" />The text tag retrieves a message from the default resource bundle ie. struts.properties
<s:text name="some.key" />The i18n tag pushes an arbitrary resource bundle on to the value stack. Other tags within the scope of the i18n tag can display messages from that resource bundle:
<s:i18n name="some.package.bundle"> <s:text name="some.key" /> </s:i18n>The key attribute of most UI tags can be used to retrieve a message from a resource bundle:
<s:textfield key="some.key" name="textfieldName"/>Localization Example:
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title><s:property value="getText('global.form')" /> - Struts2 Demo | dineshonjava.com</title> <s:head /> </head> <body> <h2><s:property value="getText('global.form')" /></h2> <s:form action="employee" method="post" validate="true"> <s:textfield name="name" key="global.name" size="20" /> <s:textfield name="age" key="global.age" size="20" /> <s:textfield name="email" key="global.email" size="20" /> <s:textfield name="telephone" key="global.telephone" size="20" /> <s:submit name="submit" key="global.submit" align="center" /> </s:form> <s:url id="localeEN" namespace="/" action="locale" > <s:param name="request_locale" >en</s:param> </s:url> <s:url id="localeHN" namespace="/" action="locale" > <s:param name="request_locale" >hn</s:param> </s:url> <s:url id="localeES" namespace="/" action="locale" > <s:param name="request_locale" >es</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="%{localeHN}" >Hindi</s:a> <s:a href="%{localeES}" >Spanish</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>
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title><s:property value="getText('global.form')" /> - Struts2 Demo | dineshonjava.com</title> </head> <body> <h2><s:property value="getText('global.success')" />.</h2> </body> </html>Here we would need to create following two actions.
package com.dineshonjava.com.struts2.action.locale; import com.opensymphony.xwork2.ActionSupport; /** * @author Dinesh Rajput * */ public class EmployeeLocaleAction extends ActionSupport { private static final long serialVersionUID = 1L; public String execute() { return SUCCESS; } }EmployeeAction.java
package com.dineshonjava.com.struts2.action; import com.opensymphony.xwork2.ActionSupport; /** * @author Dinesh Rajput * */ public class EmployeeAction extends ActionSupport { private static final long serialVersionUID = 1L; private String name; private Integer age; private String email; private String telephone; public String addEmployee() { return SUCCESS; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } }We will create our struts.xml with two actions as follows:
<?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.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <constant name="struts.custom.i18n.resources" value="global" /> <package name="default" extends="struts-default" namespace="/"> <action name="employee" class="com.dineshonjava.com.struts2.action.EmployeeAction"> <result name="success">/success.jsp</result> <result name="input">/employee.jsp</result> <result name="error">/error.jsp</result> </action> <action name="locale" class="com.dineshonjava.com.struts2.action.locale.EmployeeLocaleAction"> <result name="success">/employee.jsp</result> </action> </package> </struts>
<?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>Struts2I18N</display-name> <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> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
Labels: struts2