Developing I18N Applications in JSF

Screenshot_17

 

Abc-en-us.properties

Welcome=welcome to en use users

 

Abc-it-IT. properties

Welcome=welcome to it IT users

 

Abc-it-IN. properties

Welcome=welcome to it IN users 

 

FORM.HTML -

<html>

<body>

<from method=”post ”action=”/i18n”>

<table>

<tr><td>select language</tr><td> select country </td></tr>

<td>

< select name=”language”>

<option value=”en”> English</option>

< option value=”it”> Italian</option >

< option value=”hi”> Hindi</option >

</select>

</td>

<td>

<select name=”country”>

<option value”us”> numerical<10prion>

<option value”it”> Itali<10prion>

<option value”in”> India<10prion>

</select>

</td></tr>

<tr><td><input type=”submit” value=”SUBMITLY”>

</td></tr></TABLE>

</FROM></body></html>

 

I18N Sevlet java -

Package com. soft;

Import java. text.*;

Import java. util.*;

Import java. servlet. servlet exception;

Import java. servlet. servlet annotation. Web servlet;

Import java. servlet. http*;

@web servlet(“/i18n”)

Public class I18N servlet extends http servlet

{

Protected void dopost(http servlet request)request,

Http servletResponse response throws servlet exception,

IoException

Try{

String language=request. getparameter(“language”);

String country=request. getparameter(“country”);

Locale I = new loaf(Language, country);

Number format nf=number format. Getinstance(i);

Date format df= data format.getDataInstance (o,l);

Resource bundle rb= ResourceBundle .getBundle(“abc” ,l);

Print writer out= response. GetWriter();

Out. println(“<html>”)

Out. println(“<body>”)

Out. println(“<h1>”)

Out. println(“number:”+nf. format(1345.2345)+”<br>”);

Out. println(“date:”+nf. format(new date())+”<br>”);

Out. println(“message:”+rb. Get string(“welcome”));

Out. println(“</h1></body></html>”);

}catch(Exception e){

e.print stack trace();

}

}

}

 

  • If we use the above approach to provid II8N Support then every time user has to specify lang country, it is not suggestible in web applications.
  • To overcome the above problems, we have to provide I18N Support with out depending on the user, by getting client browser provided language setup
  • When we submit a request from a client browser then browser provided lang will be send to server in the from at “accept lang” request header, here it we get “accept-language” request header value then it is possible to identify from which local the request is coming, with this, we are able to provide I18N Support without specifying lang & country by the user
  • To get a particular request header value, we have to use the following method from servlet request, public string get header (String header-name)
  • Public class I18N Servlet extends Http servlet{ = IL; Protected void do Get(Http Servlet Request request, Http Servlef Response response) Throws servlet Exception, Ioexception{

Try{

String locate=request. get header(“accept-language”);

String Tokenizer st= new string tokenizer(local, “-”);

Int count= st. count tokens();

Local i=null;

If (count==1){

String long=st.next token();

I=new locale (c lang);

{

If(count==2){

String lang=st. next token();

String country=st. next token();

I=new locale (c lang, country);

}

If(count==3){

String lang=st. next token();

String country=st. next token();

String sys-var=st. next token();

I=new locale (lang, country), sys-var);

}

Number Format nt=number formal, get Insurance(l);

 

Screenshot_18

 

Abc-en. properties

Header1=Durga software solutions

Header2=Registration Form

Sid=student Id

Sname=student Name

Semail=email id

Smobile=contact no

Button=registration

Success=student registration success

Failure=student registration failure

 

Abc-it. Properties

Header1=Durga software solutions

Header2=Registration Form

Sid=student Id

Sname=student Name

Semail=email id

Smobile=contact no

Button=registration

Success=student registration success

Failure=student registration failure

 

Abc-te. Properties

Header1= software solutions

Header2=Darakstu patram

Sid=vidyardu Gurdimpu snkya

Sname= vidyardi peru

Semail= vidyuth samachara Gurthimlu

Smobile= sampradimpu sankya

Button=Darakasthu

Success=Vidyardi Darakastu safalamayinadhi

Failure= Vidyardi Darakastu cifalamayinadhi

 

Index.html

<!Doctype html public11413c11D+D HTML 4.01

Transitional //EN””http://www.k13.org/TR/html14/loose.dtd”>

<html>

<head>

<meta http-equiv=”Refresh”

Content=”2:URL=http://local host:1010/I18napp/registrationform.dss”>

<title>insert title here</title>

</head>

<body>

<h1>Application IS Loading….</h1>

</body>

</html>

 

Registrationform.JSP

<%@Page language=”java”content type=”text/html;

Charset=ISO-8859-1”page encoding=”ISO-8859-1”>

%>

<%@taglib prefix=”f”url=

-------”h”------

<!DOCTYPE___

---------------------------dtd”>

<html>

<head>

<meta http-equiy=”content-type ”content=”text/html;

Charset=ISO-8859-1”>

<title>insert title here</title >

</head>

<body>

<f:view>

<h:form>

<h:panelGrid columns=”2”>

<h:output text value=”#{msg.sid}”/>

<h:input text id=”sid” value=”#{regBean.sid}”/>

<h: output text value=”#{msg. sname}”/>

<h:input text id=”s name” value=”#{reg Bean. S name }”/>

<h: output text value=”#{msg. s name}”/>

<h:input text id=”s email” value=”#{reg Bean. S email }”/>

<h: output text value=”#{msg. s mobile}”/>

<h:input text id=”s mobile” value=”#{reg Bean. S mobile}”/>

<h:command button value =”#{msg.button}”action”#{ reg Bean. registration}”/>

</h:panelGrid>

</h:from>

</f:view>

</body></html>

 

Success. Jsp

<%@page language=”java” content type=”text/html,

Charset=ISO-8859-1”page encoding=”ISO-8859-“%>

<%@taglib prefix=”f”>

”r”

</Doc type>

<html>

<head>

<meta http-equiy=”content-type ”content=”text/html;

<title>Insert title here</ title >

<head>

<body>

<f:view>

<h1><h:output text value=”#{msg. success}”/></h1>

</f:view>

</body></html> 

 

 

Failure.jsp

<%@page

__________

<html>

<head>

<meta http-equiy=”content-type

<h1><h:output text value=”#{msg.failure}”/></her>

</f:view>

</body></html>

 

Registration Bean.java

Package com. soft;

Import java. util locate;

Import javax. faces. component. UIview Root;

Import javax. faces. context. Faces context;

Public class Registration bean{

Private string sid;

Private string sname;

Private string semail;

Private string smobile;

-   ----           --    - getter()setter()

Public string registration(){

String status=””;

If (sid. starts with(“DSS-”)){

Status=”success”;

}else{

Status=”failure”;

}

Return status;

}

Public string get Registration form(){

Return” Registration form”;

}

}

 

Faces-config.xml

<?xml version=”1.0”encoding=”UTF-8”?>

<Faces-config

Xmlns=”http://Java.sun.com/xml/ns/java”

Version=”1,2”>

<managed-bean>

< managed-bean -name>reg Bean< /managed-bean-name >

< managed-bean -class>com. Durga soft. Registration Bean

< managed-bean -scope>session

< managed-bean>

< navigation-rule>

< from-view-id>/registration form.jsp</      >

< navigation-case>

< from-outcome>success</from-outcome>

<to-view-id>/success.jsp</to-view-id>

</navigation-case>

<navigation-case>

<from-outcome>failure<  >

<to-view-> failure.jsp<  >

</navigation-case>

</navigation-rule>

<navigation-rule>

<from-view-id >/menu.jsp< >

</navigation-case>

<from-outcome >registration form</from-outcome>

<to-view-> registration form.jsp</   >

</navigation-case>

</navigation-rule>

<application>

<local-config>

<default-locale>en</default-locale>

<supported-locale>it</    >

<sup      >te</          >

</locale-config>

<resource-bundle>

<base-name>abc</base-name>

<var <msg</var>>

</resource-bundle>

</application>

</faces-config>

 

Web.xml

Same as prev. applications.