Services | Updates | Contact
Home | Ajax | BioInformatics | Dojo | EAI | EJB | Hibernate | J2ME | Java | Java Glossary | Java Servlets | JavaScript | Jboss | JDBC | JDO | Jmeter | JSF | JSP | JUnit | Maven | MySQL | Spring Framework | SQL | Struts | Technology | WAP | Web Services | XML
Open Source JMS
Open Source JMS OpenJMS is an open source implementation of Sun Microsystems's Java Message Service API 1.0.2 Specifica
 
Using Log Files
Log files keeps a records of internet protocol addresses (IP), Http status, date, time, bytes sent, bytes recieved, numb
 
More Tutorials...


    Loan Information     Struts     Open Source

Programming Tutorials: Ajax | Articles | JSP | Bioinformatics | Database | Free Books | Hibernate | J2EE | J2ME | Java | JavaScript | JDBC | JMS | Linux | MS Technology | PHP | RMI | Web-Services | Servlets | Struts | UML

 
 
Struts

 
Comments
 
 

 

STRUTS INTERNATIONALIZATION
--------------------------------
by Farihah Noushene B.E.
================================
(published in Developer IQ - Oct 2005)

                         

In this tutorial we shall see how to implement Internationalization (abbreviated as I18N) in Struts.

The Multinational Corporations have their branches in various parts of the world. so, they must provide products and services to their clients and customers in their traditional way. The customers will expect the product to work in their native languages especially the date, time, currency etc.,. So, the we should not make any assumptions about their clients region or language. If such assumptions become invalid, we have to re-engineer the applications.

Internationalization or I18N is the process of designing the software to support multiple languages and regions, so that we don't need to re-engineer the applications every language or country needs to be supported.

Struts provides various locale sensitive JSP tags which can be used to make the applications simpler. With this short introduction we shall see how to implement i18n in a Simple JSP file of Struts.

g:\>md localedemo
g:\>cd localedemo
g:\localedemo>edit localedemo.jsp

// g:\localedemo\localedemo.jsp

<%@ page language="java" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html:html locale="true">
<body bgcolor=pink>

<bean:message key="index.info" />

</body>
</html:html>
--------------------------------------

Next copy struts-blank.war to f:\tomcat41\webapps and start the tomcat with JAVA_HOME as jdk1.4. A folder named struts-blank will be created. Rename the folder as localedemo. Copy the above JSP file to f:\tomcat41\webapps\localedemo.

Now we have to edit the property files for various locales. The struts framework(struts1.1) provides a property file named application.properties. It is present in the folder f:\tomcat41\webapps\localedemo\web-inf\classes\resources. We have to add our own property file in this folder only. Our property file much be named along with the language code

For example the language code of
    
1. German - de
     2. Spanish - es
     3. English - en
     4. Korean - ko
     5. French - fr
     6. Italy - it

So, when we write i18n message in German language it must be placed in property file named application_de.properties and all the properties files must be present in the resources folder only. Also when we write the property file of a particular language it need not be of the same language. For example we can create application_de.properties and write the message in french or english. In fact, the message does not depend on any language. It is a simple key value pair. The message we give for the key is just substituted. The property file to locate the value of key depends on the language settings of the browser. For this example, we will write four properties file as follows.

f:\tomcat41\webapps\localedemo\web-inf\classes\resources\ application_de.properties

index.info=GERMANY
---------------------------------------------------------
f:\tomcat41\webapps\localedemo\web-inf\classes\resources\ application_es.properties

index.info=SPAIN
-----------------------------------------------------------
f:\tomcat41\webapps\localedemo\web-inf\classes\resources\ application_en.properties

index.info=ENGLISH
-----------------------------------------------------------
f:\tomcat41\webapps\localedemo\web-inf\classes\resources\ application_fr.properties

index.info=FRANCE
------------------------------------------------------------
Also append this text in the application.properties file
    index.info=STRUTS TUTORIAL.

Now we have to add entry in the
struts-config.xml file for all the properties files. The entry and its corresponding portion is shown below.

<!-- Message Resources Definitions -->

        <message-resources parameter="resources.application_fr"/>
        <message-resources parameter="resources.application_es"/>
        <message-resources parameter="resources.application_en"/>
        <message-resources parameter="resources.application_de"/>
        <message-resources parameter="resources.application"/>

Now restart the Tomcat server. Open the Internet Explorer and type the URL as http://localhost:8080/localedemo/localedemo.jsp. We will get the message 'ENGLAND'. This is because our default browser language is 'United States English'.

Now we have to change the language settings of the browser to change the locale. For that, Open a new Internet Explorer, goto 'Tools' menu and select the 'Internet Options'. In the 'Internet Option' dialog box, select 'General' tab and click the 'Languages...' button. We will get 'Language Preference' dialog box. There click 'Add...' button and add the languages. For this example add English, Spanish, German and French. Here we have languages specific to particular region. For example we have, French Belgium, French Canada, French France etc., we can select any one of these in all cases. Next select 'German' and by using the 'Move up' button, place it on the top. Now type the URL as http://localhost:8080/localedemo/localedemo.jsp. We will get the message 'GERMAN' Similarly place 'Spanish' and 'French' at the top, we will get the message 'SPAIN' and 'FRANCE' respectively.
---------------------------------------------------------------------------
 

                         


 

Facing Programming Problem?
Add This Tutorial To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 

Current Comments

23 comments so far (post your own) View All Comments Latest 10 Comments:

Hi I am doing internationalization for struts based project.my problem is i want to change ApplicationResource bundel name,i used LocaleAction and it workes fine but if i change the name of the ApplicatinoResource_ja.peroperties to Application126_ja.peroperties then in jsp it shows key not found problem.can anybody help me out?how to change name of the peroperties file.

Posted by Arunkumar on Thursday, 04.17.08 @ 15:04pm | #56792

want to know how to make hindi supported web site

Posted by kk on Wednesday, 03.26.08 @ 16:07pm | #54393

It is very good for a newbie. Thank you.

Posted by Indranil Bhakat on Monday, 02.25.08 @ 20:20pm | #49975

I am also facing the same issue.Please help

Posted by Akansha on Monday, 01.21.08 @ 13:14pm | #45753

How Can I Set the Default LOCALE Language (Ex. Application en Francais, Applicazione in Italiano) in a STRUTS 1.x Application ?

Is There some <TAG> in Struts-config or web.xml
or some use about <PLUGIN> ?

Please Help Me ,it' s very very urgent & important for my work ! Many Thanks.

Posted by Julian on Thursday, 01.17.08 @ 19:09pm | #45453

what is struts?

Posted by ganesh on Thursday, 12.27.07 @ 18:24pm | #43962

ok, i have the language change in an action. But my problem is, i have the main tile with the buttons for languages, and below i have other tiles where different pages are loaded. I want to be able to choose the language, (perform the action) and just reload the whole page with the new language. I mean, is it possible to perform an action without forwarding to a specific page? I would want just to change the language, and reload the current page (whatever is is) with the new language selected. Hope i as clear. Thanks in advance.

Posted by pantominas on Tuesday, 06.26.07 @ 15:25pm | #20211

with out changing browser settings how can we display different locales.one can came from french how can he access the page displayed in french.
with out changing browser options can u provide one sample example with jsp and servlet.

Posted by ranjith on Friday, 06.15.07 @ 14:05pm | #19303

java i18n internationalization using struts with options drop down list.

generate the localedemo.jsp file as

<%@ page language="java" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html:html locale="true">
<body bgcolor=pink>
<form name="language" action="Locale1" method="POST">


<select name="language">
<option value="en">English</option>
<option value="de">German</option>
<option value="fr">French</option>
</select>
<p>




</P>

<table border="1">

<tbody>
<tr>
<td><bean:message key="user.name" /></td>
<td><input type="text" name="username" value="" /></td>
</tr>
<tr>
<td><bean:message key="password.name" /></td>
<td><input type="text" name="password" value="" /></td>
</tr>
<td><input type="submit" value="<bean:message key="submit.name" />" /></td>


<tr> </tr>
</tbody>
</table>


<%--
<bean:message key="index.info" />
--%>
</form>
</body>
</html:html>


and write the servlet file(java file)locale1.java as


/*
* Locale1.java
*
* Created on April 19, 2007, 5:25 PM
*/

import java.io.*;
import java.net.*;
import java.util.Locale;

import javax.servlet.*;
import javax.servlet.http.*;

/**
*
* @author Javeed
* @version
*/
public class Locale1 extends HttpServlet {

/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

String formLanguage = request.getParameter("language");
Locale newLanguage = new Locale(formLanguage, "US");
Locale.setDefault(newLanguage);
HttpSession hs = request.getSession();
hs.setAttribute("org.apache.struts.action.LOCALE", newLanguage);
response.sendRedirect("localedemo.jsp");

}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
// </editor-fold>
}

use the two .properties files like ApplicationResourse.properties and ApplicationResourse_de.properties (ApplicationResourse_xx.properties format files only)

/*
* Locale1.java
*
* Created on April 19, 2007, 5:25 PM
*/

import java.io.*;
import java.net.*;
import java.util.Locale;

import javax.servlet.*;
import javax.servlet.http.*;

/**
*
* @author Javeed
* @version
*/
public class Locale1 extends HttpServlet {

/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

String formLanguage = request.getParameter("language");
Locale newLanguage = new Locale(formLanguage, "US");
Locale.setDefault(newLanguage);
HttpSession hs = request.getSession();
hs.setAttribute("org.apache.struts.action.LOCALE", newLanguage);
response.sendRedirect("localedemo.jsp");

}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
// </editor-fold>
}


Javeed M R
javeed.mca@gmail.com

Posted by Javeed M R on Thursday, 04.19.07 @ 19:30pm | #14576

i have changed the brower language settings to other countries, i am not getting the required pages depending upon the languages changes. but i have observed that the .properties file present in the last is executing every time.

example:
<message-resources parameter="com/myapp/struts/ApplicationResource"/>
<message-resources parameter="com/myapp/struts/Application_fr"/>
<message-resources parameter="com/myapp/struts/Application_en"/>
<message-resources parameter="com/myapp/struts/Application_de"/>


so Application_de.properties file is executing ,
if i keep Application_fr.properties as the last line then the _fr.properties file is executing.

could any one help me.


M R Javeed.
javeed.mca@gmail.com

Posted by Javeed on Wednesday, 04.11.07 @ 13:52pm | #13852

Leave your comment:

Name:

Email:

URL:

Title:

Comments:


Enter Code:

 

Note: Emails will not be visible or used in any way, and are not required. Please keep comments relevant. Any content deemed inappropriate or offensive may be edited and/or deleted.

No HTML code is allowed. Line breaks will be converted automatically. URLs will be auto-linked. Please use BBCode to format your text.

  EAI Articles
  Java Certification
Tell A Friend
Your Friend Name
Search Tutorials

 

 
 
Browse all Java Tutorials
Java JSP Struts Servlets Hibernate XML
Ajax JDBC EJB MySQL JavaScript JSF
Maven2 Tutorial JEE5 Tutorial Java Threading Tutorial Photoshop Tutorials Linux Technology
Technology Revolutions Eclipse Spring Tutorial Bioinformatics Tutorials Tools SQL
 

Home | JSP | EJB | JDBC | Java Servlets | WAP  | Free JSP Hosting  | Search Engine | News Archive | Jboss 3.0 tutorial | Free Linux CD's | Forum | Blogs

About Us | Advertising On RoseIndia.net  | Site Map

India News

Send your comments, Suggestions or Queries regarding this site at roseindia_net@yahoo.com.

Copyright © 2007. All rights reserved.