English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Antes de comenzar, es necesario explicar algunos conceptos importantes:
Si desea crear un sitio web globalizado, debe preocuparse por una serie de proyectos. Este capítulo le explicará en detalle cómo manejar problemas de internacionalización y proporcionará algunos ejemplos para profundizar en la comprensión.
El contenedor JSP puede proporcionar la versión de página correcta según el atributo locale de request. A continuación, se muestra la sintaxis para obtener el objeto Locale a través del objeto request:
java.util.Locale request.getLocale()
La tabla a continuación enumera los métodos importantes del objeto Locale, utilizados para detectar la región y el idioma del objeto request. Todos estos métodos mostrarán el nombre del país y el idioma en el navegador:
Número | Método & |
---|---|
1 | String getCountry() Devuelve el país/Código de región en mayúsculas, o ISO 3166 2- |
2 | String getDisplayCountry() |
3 | String getLanguage() Devuelve el código de idioma en minúsculas, o ISO 639 |
4 | String getDisplayLanguage() |
5 | 3Country() Devuelve el nombre del país3Abreviatura |
6 | 3Language() Devuelve el nombre del idioma3Abreviatura |
Este ejemplo nos muestra cómo mostrar idioma y país en JSP:
<%@ page import="java.io."*,java.util.Locale" %> <%@ page import="javax.servlet."*,javax.servlet.http.* "%> <% //Obtener información de localización del cliente Locale locale = request.getLocale(); String language = locale.getLanguage(); String country = locale.getCountry(); %> <html <head <title>Detectando Localidad</title> </head> <body <center> <h1>Detectando Localidad</h1> </centrado> <p align="center"> <% out.println("Idioma : "); + language + "<br />"); out.println("País : "); + country + "<br />"); %> </p> </body> </html>
JSP puede usar idiomas de Europa Occidental para generar una página, como inglés, español, alemán, francés, italiano, etc. Por lo tanto, el establecimiento de Content-Es muy importante que la información de encabezado de idioma se muestre correctamente para mostrar todos los caracteres.
El segundo punto es que es necesario usar entidades de caracteres HTML para mostrar caracteres especiales, como "ñ" representa & #241;, "¡" representa & #161; :
<%@ page import="java.io."*,java.util.Locale" %> <%@ page import="javax.servlet."*,javax.servlet.http.* "%> <% // Establecer tipo de contenido de respuesta response.setContentType("text");/html"); // Establecer código de idioma español. 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> </centrado> <div alineado="centrado"> <p>En Español</p> <p>?Hola Mundo!</p> </div> </body> </html>
Se puede usar la clase java.text.DateFormat y su método estático getDateTimeInstance() para formatear fechas y horas. El siguiente ejemplo muestra cómo formatear fechas y horas según la región especificada:
<%@ page import="java.io."*,java.util.Locale" %> <%@ page import="javax.servlet."*,javax.servlet.http.* "%> <%@ page import="java.text.DateFormat,java.util.Date" %> <% String title = "Fechas específicas de la región"; //Obtener el Locale del cliente 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> </centrado> <div alineado="centrado"> <p>Fecha local: <% out.print(date); %></p> </div> </body> </html>
Se puede usar la clase java.text.NumberFormat y su método estático getCurrencyInstance() para formatear números. Por ejemplo, en monedas específicas de la región de tipo long y double. El siguiente ejemplo muestra cómo formatear monedas según la región especificada:
<%@ page import="java.io."*,java.util.Locale" %> <%@ page import="javax.servlet."*,javax.servlet.http.* "%> <%@ page import="java.text.NumberFormat,java.util.Date" %> <% String title = "Moneda específica de la región"; //Obtener el Locale del cliente 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> </centrado> <div alineado="centrado"> <p>Currency Formatted: <% out.print(formattedCurr); %></p> </div> </body> </html>
Se puede usar la clase java.text.NumberFormat y su método estático getPercentInstance() para formatear porcentajes. El siguiente ejemplo nos muestra cómo formatear porcentajes según la región especificada:
<%@ page import="java.io."*,java.util.Locale" %> <%@ page import="javax.servlet."*,javax.servlet.http.* "%> <%@ page import="java.text.NumberFormat,java.util.Date" %> <% String title = "Porcentaje Específico del Locale"; //Obtener el Locale del cliente 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> </centrado> <div alineado="centrado"> <p>Porcentaje Formateado: <% out.print(formattedPerc); %></p> </div> </body> </html>