English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Prima di iniziare, vediamo tre termini importanti:
Internazionalizzazione (i18n):Questo significa che il sito web offre versioni tradotte diverse in lingua o nazionalità dell'utente.
Localizzazione (l10n):Questo significa aggiungere risorse al sito web per adattarlo a regioni geografiche o culturali specifiche, ad esempio tradurre il sito web in Hindi.
Configurazione regionale (locale):Questa è una cultura o regione geografica speciale. Di solito si riferisce a un simbolo di lingua seguito da un trattino e un simbolo di paese. Ad esempio, "en_US" rappresenta la configurazione regionale inglese per il paese degli Stati Uniti.
Quando si crea un sito web globale, ci sono alcune considerazioni da tenere a mente. Questo tutorial non spiega i dettagli completi di queste considerazioni, ma attraverso un ottimo esempio, ti mostrerà come far apparire le pagine web in diverse lingue attraverso la localizzazione (cioè la configurazione regionale).
Il servlet può拾取 la versione del sito web corrispondente alla configurazione regionale del richiedente e fornire la versione del sito web in base alla lingua, alla cultura e alle esigenze locali. Di seguito è riportato il metodo per ottenere l'oggetto Locale nel request oggetto.
java.util.Locale request.getLocale()
Di seguito è elencato un elenco di metodi di configurazione regionale importanti che puoi utilizzare per rilevare la posizione geografica, la lingua e la configurazione regionale del richiedente. Tutti i metodi elencati mostrano il nome del paese e il nome della lingua impostati nel browser del richiedente.
Numero di sequenza | Metodo & Descrizione |
---|---|
1 | String getCountry() Il metodo restituisce il codice del paese/regione della configurazione regionale in forma di due lettere maiuscole secondo lo standard ISO 3166. |
2 | String getDisplayCountry() Il metodo restituisce il nome del paese della configurazione regionale adatto per essere visualizzato all'utente. |
3 | String getLanguage() Il metodo restituisce il codice della lingua della configurazione regionale in forma minuscola secondo lo standard ISO 639. |
4 | String getDisplayLanguage() Il metodo restituisce il nome della lingua di configurazione regionale adatta per essere visualizzata all'utente. |
5 | String getISO3Country() Questo metodo restituisce l'abbreviazione di tre lettere del paese della regione. |
6 | String getISO3Language(); Questo metodo restituisce l'abbreviazione di tre lettere della lingua della regione; |
Questo esempio dimostra come visualizzare la lingua e il paese correlato di una richiesta:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; public class GetLocale extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取客户端的区域设置 Locale locale = request.getLocale(); String language = locale.getLanguage(); String country = locale.getCountry(); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "Rilevamento delle impostazioni regionali"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + language + "</h1>\n" + "<h2 align=\"center\">" + country + "</h2>\n" + "</body></html>);" {} {}
Il servlet può generare pagine scritte in lingue dell'Europa occidentale (ad esempio, inglese, spagnolo, tedesco, francese, italiano, olandese, ecc.). Per visualizzare correttamente tutti i caratteri, è molto importante impostare l'intestazione Content-Language.
Il secondo punto è mostrare tutti i caratteri speciali tramite entità HTML, ad esempio, "ñ" rappresenta "ñ", "¡" rappresenta "¡", come illustrato di seguito:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; public class DisplaySpanish extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // Impostare il codice linguistico italiano response.setHeader("Content-Language", "it"); String title = "In Italiano"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1>" + "In Italiano:" + "</h1>\n" + "<h1>" + "€Ciao, Mondo!" + "</h1>\n" + "</body></html>);" {} {}
Puoi utilizzare la classe java.text.DateFormat e il metodo statico getDateTimeInstance() per formattare date e orari specifici della regione. Di seguito è riportato un esempio su come formattare una data specifica per una regione data:;
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; import java.text.DateFormat; import java.util.Date; public class DateLocale extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 获取客户端的区域设置 Locale locale = request.getLocale( ); String date = DateFormat.getDateTimeInstance() DateFormat.FULL, DateFormat.SHORT, locale).format(new Date()); String title = "Data specifica della regione"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align="center">" + date + "</h1>\n" + "</body></html>);" {} {}
È possibile utilizzare la classe java.text.NumberFormat e il metodo statico getCurrencyInstance() per formattare numeri (ad esempio, di tipo long o double) come moneta specifica della configurazione della regione. Di seguito è riportato un esempio di come formattare una moneta specifica di una configurazione di regione data:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; import java.text.NumberFormat; import java.util.Date; public class CurrencyLocale extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 获取客户端的区域设置 Locale locale = request.getLocale( ); NumberFormat nft = NumberFormat.getCurrencyInstance(locale); String formattedCurr = nft.format(1000000); String title = "Moneta specifica della regione"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align="center">" + formattedCurr + "</h1>\n" + "</body></html>);" {} {}
È possibile utilizzare la classe java.text.NumberFormat e il metodo statico getPercentInstance() per formattare percentuali specifiche della configurazione della regione. Di seguito è riportato un esempio di come formattare percentuali specifiche di una configurazione di regione data:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; import java.text.NumberFormat; import java.util.Date; public class PercentageLocale extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 获取客户端的区域设置 Locale locale = request.getLocale( ); NumberFormat nft = NumberFormat.getPercentInstance(locale); String formattedPerc = nft.format(0.51); String title = "特定于区域设置的百分比"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + formattedPerc + "</h1>\n" + "</body></html>);" {} {}