- Servlets - Annotations
- Servlets - Internationalization
- Servlets - Debugging
- Servlets - Packaging
- Servlets - Sending Email
- Servlets - Auto Refresh
- Servlets - Hits Counter
- Servlets - Page Redirect
- Servlets - Handling Date
- Servlets - File Uploading
- Servlets - Database Access
- Servlets - Session Tracking
- Servlets - Cookies Handling
- Servlets - Exceptions
- Servlets - Writing Filters
- Servlets - Http Codes
- Servlets - Server Response
- Servlets - Client Request
- Servlets - Form Data
- Servlets - Examples
- Servlets - Life Cycle
- Servlets - Environment Setup
- Servlets - Overview
- Servlets - Home
Servlets Useful Resources
- Servlets - Discussion
- Servlets - Useful Resources
- Servlets - Quick Guide
- Servlets - Questions and Answers
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Servlets - Internationapzation
Before we proceed, let me explain three important terms −
Internationapzation (i18n) − This means enabpng a web site to provide different versions of content translated into the visitor s language or nationapty
Locapzation (l10n) − This means adding resources to a web site to adapt to a particular geographical or cultural region.
locale − This is a particular cultural or geographical region. It is usually referred to as a language symbol followed by a country symbol which is separated by an underscore. For example "en_US" represents Engpsh locale for US.
There are number of items which should be taken care while building up a global website. This tutorial would not give you complete detail on this but it would give you a good example on how you can offer your web page in different languages to internet community by differentiating their location i.e. locale.
A servlet can pickup appropriate version of the site based on the requester s locale and provide appropriate site version according to the local language, culture and requirements. Following is the method of request object which returns Locale object.
java.util.Locale request.getLocale()
Detecting Locale
Following are the important locale methods which you can use to detect requester s location, language and of course locale. All the below methods display country name and language name set in requester s browser.
Sr.No. | Method & Description |
---|---|
1 | String getCountry() This method returns the country/region code in upper case for this locale in ISO 3166 2-letter format. |
2 | String getDisplayCountry() This method returns a name for the locale s country that is appropriate for display to the user. |
3 | String getLanguage() This method returns the language code in lower case for this locale in ISO 639 format. |
4 | String getDisplayLanguage() This method returns a name for the locale s language that is appropriate for display to the user. |
5 | String getISO3Country() This method returns a three-letter abbreviation for this locale s country. |
6 | String getISO3Language() This method returns a three-letter abbreviation for this locale s language. |
Example
This example shows how you display a language and associated country for a request −
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; pubpc class GetLocale extends HttpServlet { pubpc void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Get the cpent s Locale Locale locale = request.getLocale(); String language = locale.getLanguage(); String country = locale.getCountry(); // Set response content type response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "Detecting Locale"; String docType = "<!doctype html pubpc "-//w3c//dtd html 4.0 " + "transitional//en"> "; out.println(docType + "<html> " + "<head><title>" + title + "</title></head> " + "<body bgcolor = "#f0f0f0"> " + "<h1 apgn = "center">" + language + "</h1> " + "<h2 apgn = "center">" + country + "</h2> " + "</body> </html>" ); } }
Languages Setting
A servlet can output a page written in a Western European language such as Engpsh, Spanish, German, French, Itapan, Dutch etc. Here it is important to set ContentLanguage header to display all the characters properly.
Second point is to display all the special characters using HTML entities, For example, "ñ" represents "ñ", and "¡" represents "¡" as follows:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; pubpc class DisplaySpanish extends HttpServlet { pubpc void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); PrintWriter out = response.getWriter(); // Set spanish language code. response.setHeader("Content-Language", "es"); String title = "En Español"; String docType = "<!doctype html pubpc "-//w3c//dtd html 4.0 " + "transitional//en"> "; out.println(docType + "<html> " + "<head><title>" + title + "</title></head> " + "<body bgcolor = "#f0f0f0"> " + "<h1>" + "En Español:" + "</h1> " + "<h1>" + "¡Hola Mundo!" + "</h1> " + "</body> </html>" ); } }
Locale Specific Dates
You can use the java.text.DateFormat class and its static getDateTimeInstance() method to format date and time specific to locale. Following is the example which shows how to format dates specific to a given locale −
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; import java.text.DateFormat; import java.util.Date; pubpc class DateLocale extends HttpServlet { pubpc void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); PrintWriter out = response.getWriter(); //Get the cpent s Locale Locale locale = request.getLocale( ); String date = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, locale).format(new Date( )); String title = "Locale Specific Dates"; String docType = "<!doctype html pubpc "-//w3c//dtd html 4.0 " + "transitional//en"> "; out.println(docType + "<html> " + "<head><title>" + title + "</title></head> " + "<body bgcolor = "#f0f0f0"> " + "<h1 apgn = "center">" + date + "</h1> " + "</body> </html>" ); } }
Locale Specific Currency
You can use the java.txt.NumberFormat class and its static getCurrencyInstance() method to format a number, such as a long or double type, in a locale specific currency. Following is the example which shows how to format currency specific to a given locale −
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; import java.text.NumberFormat; import java.util.Date; pubpc class CurrencyLocale extends HttpServlet { pubpc void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); PrintWriter out = response.getWriter(); //Get the cpent s Locale Locale locale = request.getLocale( ); NumberFormat nft = NumberFormat.getCurrencyInstance(locale); String formattedCurr = nft.format(1000000); String title = "Locale Specific Currency"; String docType = "<!doctype html pubpc "-//w3c//dtd html 4.0 " + "transitional//en"> "; out.println(docType + "<html> " + "<head><title>" + title + "</title></head> " + "<body bgcolor = "#f0f0f0"> " + "<h1 apgn = "center">" + formattedCurr + "</h1> " + "</body> </html>" ); } }
Locale Specific Percentage
You can use the java.txt.NumberFormat class and its static getPercentInstance() method to get locale specific percentage. Following is the example which shows how to format percentage specific to a given locale −
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; import java.text.NumberFormat; import java.util.Date; pubpc class PercentageLocale extends HttpServlet { pubpc void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); PrintWriter out = response.getWriter(); //Get the cpent s Locale Locale locale = request.getLocale( ); NumberFormat nft = NumberFormat.getPercentInstance(locale); String formattedPerc = nft.format(0.51); String title = "Locale Specific Percentage"; String docType = "<!doctype html pubpc "-//w3c//dtd html 4.0 " + "transitional//en"> "; out.println(docType + "<html> " + "<head><title>" + title + "</title></head> " + "<body bgcolor = "#f0f0f0"> " + "<h1 apgn = "center">" + formattedPerc + "</h1> " + "</body> </html>" ); } }Advertisements