English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

国际化 JSP

Prima di iniziare, è necessario spiegare alcune concetti importanti:

  • Internazionalizzazione (i18n): indica che una pagina mostra diverse versioni di traduzione in base alla lingua o alla nazione dell'utente.
  • Localizzazione (l10n): aggiungere risorse al sito per adattarlo a diverse regioni e culture. Ad esempio, la versione indiana del sito web.
  • Regione: è una regione o cultura specifica, generalmente considerata come un segno di lingua e un segno di nazione collegati tramite trattino. Ad esempio, "en_US" rappresenta la regione dell'inglese americano.

Per costruire un sito web globale, è necessario preoccuparsi di una serie di progetti. Questo capitolo spiegherà in dettaglio come gestire i problemi di internazionalizzazione e fornirà alcuni esempi per approfondire la comprensione.

Il container JSP può fornire la versione corretta della pagina in base all'attributo locale della request. Di seguito è riportata la sintassi per ottenere l'oggetto Locale attraverso l'oggetto request:

java.util.Locale request.getLocale() 

Rilevamento Locale

La tabella elenca i metodi più importanti dell'oggetto Locale, utilizzati per rilevare la regione, la lingua e la cultura dell'oggetto request. Tutti questi metodi mostrano il nome della nazione e il nome della lingua nel browser:

Num. Metodo & Descrizione
1 String getCountry()

Restituisce il codice di regione in maiuscolo o la regione in formato ISO 3166 a 2 lettere
2 String getDisplayCountry()

Restituisce il nome del paese da visualizzare per l'utente
3 String getLanguage()

Restituisce il codice di lingua in minuscolo inglese o la regione in formato ISO 639
4 String getDisplayLanguage()

Restituisce il nome della lingua da visualizzare per l'utente
5 String getISO3Country()

Restituisce l'abbreviazione a 3 lettere del nome del paese
6 String getISO3Language()

Restituisce l'abbreviazione a 3 lettere del nome della lingua

Dimostrazione di esempio

Questo esempio ci mostra come visualizzare la lingua e il paese in JSP:

<%@ page import="java.io.*,java.util.Locale" %>
<%@ page import="javax.servlet.*,javax.servlet.http.* "%>
<%
   // Ottieni le informazioni di localizzazione del client
   Locale locale = request.getLocale();
   String language = locale.getLanguage();
   String country = locale.getCountry();
%>
<html>
<head>
<title>Rilevamento della Locale</title>
</head>
<body>
<centro>
<h1>Rilevamento della Locale</h1>
</centro>
<p align="center">
<% 
   out.println("Lingua : " + language  + "<br />");
   out.println("Paese  : " + country   + "<br />");
%>
</p>
</body>
</html>

Impostazione della lingua

JSP può utilizzare le lingue dell'Europa occidentale per visualizzare una pagina, ad esempio l'inglese, lo spagnolo, il tedesco, il francese, l'italiano e così via. Di conseguenza, è molto importante impostare correttamente l'header di informazioni Content-Language per visualizzare tutti i caratteri.

Il secondo punto è che è necessario utilizzare i segni di entity HTML per visualizzare i caratteri speciali, ad esempio "ñ" rappresenta ñ, "¡" rappresenta ¡ :

<%@ page import="java.io.*,java.util.Locale" %>
<%@ page import="javax.servlet.*,javax.servlet.http.* "%>
<%
    // Imposta il tipo di contenuto della risposta
    response.setContentType("text/html");
    // Imposta il codice di lingua spagnolo.
    response.setHeader("Content-Language", "it");
    String title = "En Español";
%>
<html>
<head>
<title><%  out.print(title); %></title>
</head>
<body>
<centro>
<h1><%  out.print(title); %></h1>
</centro>
<div allineamento="centro">
<p>En Español</p>
<p>Hola Mundo!</p>
</div>
</body>
</html>

Data specifica della regione

Puoi utilizzare la classe java.text.DateFormat e il suo metodo statico getDateTimeInstance() per formattare date e ore. Ecco un esempio che ci mostra come formattare date e ore in base alla regione specifica:

<%@ page import="java.io.*,java.util.Locale" %>
<%@ page import="javax.servlet.*,javax.servlet.http.* "%>
<%@ page import="java.text.DateFormat,java.util.Date" %>
<%
    String title = "Date specifiche della regione";
    //Ottieni il Locale del client
    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>
<centro>
<h1><% out.print(title); %></h1>
</centro>
<div allineamento="centro">
<p>Data locale: <%  out.print(date); %></p>
</div>
</body>
</html>

Valuta specifica della regione

Puoi utilizzare la classe java.text.NumberFormat e il suo metodo statico getCurrencyInstance() per formattare numeri. Ad esempio, in valuta specifica della regione per tipi long e double. Ecco un esempio che ci mostra come formattare la valuta in base alla regione specifica:

<%@ page import="java.io.*,java.util.Locale" %>
<%@ page import="javax.servlet.*,javax.servlet.http.* "%>
<%@ page import="java.text.NumberFormat,java.util.Date" %>
<%
    String title = "Valuta specifica della regione";
    //Ottieni il Locale del client
    Locale locale = request.getLocale( );
    NumberFormat nft = NumberFormat.getCurrencyInstance(locale);
    String formattedCurr = nft.format(1000000);
%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<centro>
<h1><% out.print(title); %></h1>
</centro>
<div allineamento="centro">
<p>Valuta formattata: <%  out.print(formattedCurr); %></p>
</div>
</body>
</html>

Percentuale specifica della regione

Puoi utilizzare la classe java.text.NumberFormat e il suo metodo statico getPercentInstance() per formattare le percentuali. Ecco un esempio che ci mostra come formattare le percentuali in base alla regione specifica:

<%@ page import="java.io.*,java.util.Locale" %>
<%@ page import="javax.servlet.*,javax.servlet.http.* "%>
<%@ page import="java.text.NumberFormat,java.util.Date" %>
<%
    String title = "Percentuale Specifica del Locale";
    //Ottieni il Locale del client
    Locale locale = request.getLocale( );
    NumberFormat nft = NumberFormat.getPercentInstance(locale);
    String formattedPerc = nft.format(0.51);
%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<centro>
<h1><% out.print(title); %></h1>
</centro>
<div allineamento="centro">
<p>Percentuale Formattata: <%  out.print(formattedPerc); %></p>
</div>
</body>
</html>