Internationalization(i18n):-The
process of preparing an application to support more than one
language and to represent data in different formats.There are 18
letters between i and n so will refer as i18n
Localization(L10N):
-The process of adapting an internationalized application to
support a specific region or locale
Lets
take an example of Facebook which supports multiple languages like
Engilish,Portugal,Hindi etc.
This
can be achieved in JSF by using resource bundle.
Steps
to Internationalization :-
- Create a JSF web application in Eclipse
- Open work space
- Then New-->Create dynamic web application
- Select run time environment like Tomcat etc.
- Place JSF related libraries/Jars into build path(Ex:- ApacheMyFaces.lib etc.)
- Create a resource bundle :- generally they will be .properties files,where we write text for different languages
- Loading resource bundle :- There are two ways of implementing
- faces-config.xml :- use <resource-bundle> is used to i18n for entire application
- <f:loadBundle> :- is used to i18n for a particule web page
We
will now implement i18n and L10N in a web application. We have a
login page which supports English and French languages.Text related
to this are placed in .properties file
- Create two .properties file one for English and One for French languages.Place them under src folderApplicationResource.propertiesLoginId: Login Id:Password: Password:Login: LoginReset: Reset
ApplicationResource_fr.properties
LoginId:
Identification
d'ouverture
:
Password:
Mot
de
passe :
Login:
Ouverture
Reset:
Remettre
à l'état
initial
- Now we will use this resources in faces-config.xml .We can do this from GUI of faces-config.xml
<application>
<resource-bundle>
<base-name>ApplicationResource</base-name>
<var>msg</var>
</resource-bundle>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>fr_FR</supported-locale>
</locale-config>
</application>
- Create a ManagedBean-LoginBean.java and register it in faces-config.xml . We can do this from GUI of faces-config.xmlLoginBean.java
import
java.util.Locale;
import
javax.faces.context.FacesContext;
public
class
LoginBean {
private
String uName;
private
String password;
public
String getuName() {
return
uName;
}
public
void
setuName(String uName) {
this.uName
= uName;
}
public
String getPassword() {
return
password;
}
public
void
setPassword(String password) {
this.password
= password;
}
public
String changeFrench()
{
FacesContext.getCurrentInstance().getViewRoot().setLocale(Locale.FRENCH);
return
"";
}
}
Explanation
:-
In
LoginBean.java we have a method changeFrench() which will take care
of getting text from properties file and converting it into
respective language
FacesContext.getCurrentInstance().getViewRoot().setLocale(Locale.FRENCH);
The
above statement is used change language to French
- Login.jsp
<f:view>
<h:form>
<h:outputText
value="#{msg.LoginId}">
</h:outputText>
<h:inputText
value="#{loginBean.uName
}"></h:inputText>
<br>
<h:outputText
value="#{msg.Password}"></h:outputText>
<h:inputText
value="#{loginBean.password
}"></h:inputText>
<br>
<h:commandButton
value="#{msg.Login}"></h:commandButton>
<h:commandButton
value="#{msg.Reset}"></h:commandButton>
<h:commandLink
action="#{loginBean.changeFrench
}">
<h:outputText
value="French"></h:outputText>
</h:commandLink>
</h:form>
</f:view>
Here
we have used #{msg.LoginId} etc. statements. The variable msg is
declared in faces-config.xml .
Now
run the application .By default the page will be in english for
converting into French click on link French.
Screenshot
of Login.jsp in English :-
Click
on French the method changeFrench in LoginBean will get called and
converts the text into French
If
we want to do it for a specific jsp page we can use
<f:loadBundle
var="msg" basename="ApplicationResource"/>
after <f:view> tag
Happy
Learning
Please
provide your valuable comments on this article and share it across
your network.
No comments:
Post a Comment