JSP - Internazionalizzazione | i18n | l10n
In questo capitolo, discuteremo il concetto di internazionalizzazione in JSP. Prima di procedere, comprendiamo i seguenti tre termini importanti:
Internationalization (i18n) - Ciò significa consentire a un sito web di fornire diverse versioni di contenuti tradotti nella lingua o nazionalità del visitatore.
Localization (l10n) - Ciò significa aggiungere risorse a un sito web per adattarlo a una particolare regione geografica o culturale, ad esempio la traduzione in hindi a un sito web.
locale- Questa è una particolare regione culturale o geografica. Di solito viene indicato come un simbolo della lingua seguito da un simbolo del paese separati da un trattino basso. Per esempio, "en_US"rappresenta la lingua inglese per gli Stati Uniti.
Ci sono una serie di elementi di cui occuparsi durante la creazione di un sito Web globale. Questo tutorial non ti fornirà dettagli completi su questo, ma ti darà un buon esempio di come puoi offrire la tua pagina Web in diverse lingue alla comunità Internet differenziando la loro posizione, cioè la locale.
Un JSP può prelevare la versione appropriata del sito in base alla locale del richiedente e fornire la versione del sito appropriata in base alla lingua, cultura e requisiti locali. Di seguito è riportato il metodo dell'oggetto richiesta che restituisce l'oggetto Locale.
java.util.Locale request.getLocale()
Rilevamento delle impostazioni locali
Di seguito sono riportati i metodi di localizzazione importanti che è possibile utilizzare per rilevare requester's location, language e naturalmente locale. Tutti i metodi seguenti visualizzano il nome del paese e il nome della lingua impostati nel browser del richiedente.
S.No. | Metodo e descrizione |
---|---|
1 | String getCountry() Questo metodo restituisce il codice del paese / regione in lettere maiuscole per questa lingua nel formato ISO 3166 a 2 lettere. |
2 | String getDisplayCountry() Questo metodo restituisce un nome per il paese della locale che è appropriato per la visualizzazione all'utente. |
3 | String getLanguage() Questo metodo restituisce il codice della lingua in minuscolo per questa locale nel formato ISO 639. |
4 | String getDisplayLanguage() Questo metodo restituisce un nome per la lingua della locale appropriata per la visualizzazione all'utente. |
5 | String getISO3Country() Questo metodo restituisce un'abbreviazione di tre lettere per il paese di questa lingua. |
6 | String getISO3Language() Questo metodo restituisce un'abbreviazione di tre lettere per la lingua di questa locale. |
Esempio
L'esempio seguente mostra come visualizzare una lingua e un paese associato per una richiesta in un 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>
Impostazione delle lingue
Un JSP può produrre una pagina scritta in una lingua dell'Europa occidentale come inglese, spagnolo, tedesco, francese, italiano, olandese, ecc. Qui è importante impostare l'intestazione Content-Language per visualizzare correttamente tutti i caratteri.
Un altro punto importante è visualizzare tutti i caratteri speciali utilizzando entità HTML; per esempio,"ñ" rappresenta "ñ", e "¡" rappresenta "¡" come segue -
<%@ 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>
Date specifiche locali
Puoi usare il file java.text.DateFormat classe e la sua statica getDateTimeInstance( )metodo per formattare la data e l'ora specifiche della locale. Di seguito è riportato l'esempio che mostra come formattare date specifiche per una data locale:
<%@ 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>
Valuta specifica locale
Puoi usare il file java.txt.NumberFormat classe e la sua statica getCurrencyInstance( )metodo per formattare un numero, come un tipo lungo o doppio, in una corrente specifica della locale. Di seguito è riportato l'esempio che mostra come formattare la valuta specifica per una data locale:
<%@ 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>
Percentuale specifica locale
Puoi usare il file java.txt.NumberFormat classe e la sua statica getPercentInstance( )metodo per ottenere una percentuale specifica della località. L'esempio seguente mostra come formattare una percentuale specifica per una data locale:
<%@ 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>