JSP - Internationalisation | i18n | l10n
Dans ce chapitre, nous discuterons du concept d'internationalisation dans JSP. Avant de continuer, comprenons les trois termes importants suivants -
Internationalization (i18n) - Cela signifie permettre à un site Web de fournir différentes versions de contenu traduites dans la langue ou la nationalité du visiteur.
Localization (l10n) - Cela signifie ajouter des ressources à un site Web pour l'adapter à une région géographique ou culturelle particulière, par exemple la traduction en hindi sur un site Web.
locale- Il s'agit d'une région culturelle ou géographique particulière. Il est généralement appelé symbole de langue suivi d'un symbole de pays séparés par un trait de soulignement. Par exemple, "en_US"représente la langue anglaise pour les États-Unis.
Il y a un certain nombre d'éléments qui doivent être pris en compte lors de la création d'un site Web mondial. Ce didacticiel ne vous donnera pas tous les détails à ce sujet, mais il vous donnera un bon exemple sur la façon dont vous pouvez proposer votre page Web dans différentes langues à la communauté Internet en différenciant leur emplacement, c'est-à-dire les paramètres régionaux.
Un JSP peut choisir une version appropriée du site en fonction des paramètres régionaux du demandeur et fournir une version de site appropriée en fonction de la langue, de la culture et des exigences locales. Voici la méthode d'objet de requête qui renvoie l'objet Locale.
java.util.Locale request.getLocale()
Détection des paramètres régionaux
Voici les méthodes locales importantes que vous pouvez utiliser pour détecter requester's location, language et bien sûr locale. Toutes les méthodes ci-dessous affichent le nom du pays et le nom de la langue définis dans le navigateur du demandeur.
S.No. | Méthode et description |
---|---|
1 | String getCountry() Cette méthode renvoie le code du pays / région en majuscules pour ce paramètre régional au format ISO 3166 à 2 lettres. |
2 | String getDisplayCountry() Cette méthode renvoie un nom pour le pays des paramètres régionaux approprié pour l'affichage à l'utilisateur. |
3 | String getLanguage() Cette méthode renvoie le code de langue en minuscules pour cette locale au format ISO 639. |
4 | String getDisplayLanguage() Cette méthode renvoie un nom pour la langue des paramètres régionaux qui convient à l'affichage pour l'utilisateur. |
5 | String getISO3Country() Cette méthode renvoie une abréviation de trois lettres pour le pays de cette locale. |
6 | String getISO3Language() Cette méthode renvoie une abréviation de trois lettres pour la langue de cette locale. |
Exemple
L'exemple suivant montre comment afficher une langue et un pays associé pour une requête dans une JSP -
<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%
//Get the client's Locale
Locale locale = request.getLocale();
String language = locale.getLanguage();
String country = locale.getCountry();
%>
<html>
<head>
<title>Detecting Locale</title>
</head>
<body>
<center>
<h1>Detecting Locale</h1>
</center>
<p align = "center">
<%
out.println("Language : " + language + "<br />");
out.println("Country : " + country + "<br />");
%>
</p>
</body>
</html>
Réglage des langues
Un JSP peut produire une page écrite dans une langue d'Europe occidentale telle que l'anglais, l'espagnol, l'allemand, le français, l'italien, le néerlandais, etc. Ici, il est important de définir l'en-tête Content-Language pour afficher correctement tous les caractères.
Un autre point important est d'afficher tous les caractères spéciaux à l'aide d'entités HTML; par exemple,"ñ" représente "ñ", et "¡" représente "¡" comme suit -
<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%
// Set response content type
response.setContentType("text/html");
// Set spanish language code.
response.setHeader("Content-Language", "es");
String title = "En Español";
%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align = "center">
<p>En Español</p>
<p>¡Hola Mundo!</p>
</div>
</body>
</html>
Dates spécifiques aux paramètres régionaux
Vous pouvez utiliser le java.text.DateFormat classe et son statique getDateTimeInstance( )méthode pour formater la date et l'heure spécifiques aux paramètres régionaux. Voici l'exemple qui montre comment formater des dates spécifiques à une locale donnée -
<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%@ page import = "java.text.DateFormat,java.util.Date" %>
<%
String title = "Locale Specific Dates";
//Get the client's Locale
Locale locale = request.getLocale( );
String date = DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.SHORT,
locale).format(new Date( ));
%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align = "center">
<p>Local Date: <% out.print(date); %></p>
</div>
</body>
</html>
Monnaie spécifique aux paramètres régionaux
Vous pouvez utiliser le java.txt.NumberFormat classe et son statique getCurrencyInstance( )méthode pour formater un nombre, tel qu'un type long ou double, dans une devise spécifique à la locale. Voici l'exemple qui montre comment formater une devise spécifique à une locale donnée -
<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%@ page import = "java.text.NumberFormat,java.util.Date" %>
<%
String title = "Locale Specific Currency";
//Get the client's Locale
Locale locale = request.getLocale( );
NumberFormat nft = NumberFormat.getCurrencyInstance(locale);
String formattedCurr = nft.format(1000000);
%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align = "center">
<p>Formatted Currency: <% out.print(formattedCurr); %></p>
</div>
</body>
</html>
Pourcentage spécifique aux paramètres régionaux
Vous pouvez utiliser le java.txt.NumberFormat classe et son statique getPercentInstance( )méthode pour obtenir un pourcentage spécifique aux paramètres régionaux. L'exemple suivant montre comment formater le pourcentage spécifique à un paramètre régional donné -
<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%@ page import = "java.text.NumberFormat,java.util.Date" %>
<%
String title = "Locale Specific Percentage";
//Get the client's Locale
Locale locale = request.getLocale( );
NumberFormat nft = NumberFormat.getPercentInstance(locale);
String formattedPerc = nft.format(0.51);
%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align = "center">
<p>Formatted Percentage: <% out.print(formattedPerc); %></p>
</div>
</body>
</html>