English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Prima di iniziare, è necessario spiegare alcune concetti importanti:
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()
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 |
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>
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>
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>
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>
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>