Antes de comenzar, es necesario explicar varios conceptos importantes:
Internacionalización (i18n): indica que una página se presentará en diferentes traducciones según el idioma o país del visitante.
Localización (l10n): Agregar recursos a un sitio web para adaptarlo a diferentes regiones y culturas. Como la versión india del sitio web.
Región: Se trata de una región o cultura específica, generalmente considerada un marcador lingüístico y un marcador nacional conectados por un guión bajo. Por ejemplo, "en_US" representa la región de habla inglesa de Estados Unidos.
Si desea crear un sitio web global, debe ocuparse de una serie de elementos. Este capítulo le explicará en detalle cómo abordar los problemas de internacionalización y le brindará algunos ejemplos para profundizar su comprensión.
El contenedor JSP puede proporcionar la versión de página correcta según el atributo local de la solicitud. A continuación, se proporciona la sintaxis de cómo obtener el objeto Locale a través del objeto de solicitud:
java.util.Locale request.getLocale()
La siguiente tabla enumera los métodos más importantes en el objeto Locale, que se utilizan para detectar la región, el idioma y la región del objeto de solicitud. Todos estos métodos mostrarán el nombre del país y el nombre del idioma en el navegador:
número de serie | Método y descripción |
---|---|
1 | String getCountry() devuelve el código de país/región en inglés en mayúsculas o la región en formato ISO 3166 de 2 letras |
2 | String getDisplayCountry() devuelve el nombre del país que se mostrará al usuario |
3 | String getLanguage() devuelve la versión en minúsculas en inglés del código de idioma, o el área en formato ISO 639 |
4 | String getDisplayLanguage() devuelve el nombre del idioma que se mostrará al usuario |
5 | La cadena getISO3Country() devuelve la abreviatura de 3 letras del nombre del país. |
6 | La cadena getISO3Language() devuelve la abreviatura de 3 letras del nombre del idioma. |
Este ejemplo nos muestra cómo mostrar el idioma y el país en JSP:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% //Conseguir clientes Información de localización del terminal Locale locale = request.getLocale(); String language = locale.getLanguage() String country = locale.getCountry(); Configuración regional</title></head><body><center><h1>Detección de configuración regional</h1></center><p align="center"><% out.println("Idioma: " + idioma + " <br />"); out.println("País : " + país + "<br />");%></p></body></html>
JSP puede utilizar idiomas de Europa occidental para generar una página, como inglés, español, alemán, francés, italiano, etc. Se puede ver que es importante configurar el encabezado Content-Language para mostrar todos los caracteres correctamente.
El segundo punto es que necesita utilizar entidades de caracteres HTML para mostrar caracteres especiales. Por ejemplo, "ñ" representa "?" y "¡"
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% // Establecer respuesta tipo de contenido respuesta.setContentType("text/html"); // Establece el código de idioma español. Response.setHeader("Content-Language", "es"); %><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>
Puede utilizar 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 un rango específico:
<%@ página import="java.io.*,java.util.Locale" %><%@ página import="javax.servlet.*,javax.servlet.http.* "%><%@ página importación= "java.text.DateFormat,java.util.Date" %><% String title = "Fechas específicas de la configuración regional"; //Obtener la configuración regional del cliente locale = request.getLocale( ); DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.SHORT, locale).format(new Date( )); /head><body><center><h1><% out.print(title); %></h1></center><div align="center"><p>Fecha local: <% salida.print(fecha); %></p></div></body></html>
Los números se pueden formatear usando la clase java.text.NumberFormat y su método estático getCurrencyInstance(). Por ejemplo, posiciones largas y dobles en monedas específicas de la región. El siguiente ejemplo muestra cómo formatear la moneda según una configuración regional específica:
<%@ página import="java.io.*,java.util.Locale" %><%@ página import="javax.servlet.*,javax.servlet.http.* "%><%@ página importación= "java.text.NumberFormat,java.util.Date" %><% String title = "Moneda específica de la configuración regional"; //Obtener la configuración regional del cliente locale = request.getLocale( ); 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>Moneda formateada: <% out.print(formattedCurr); %></p></div></body></html>
Puede formatear porcentajes utilizando la clase java.text.NumberFormat y su método estático getPercentInstance(). El siguiente ejemplo nos muestra cómo formatear un porcentaje según un rango específico:
<%@ página import="java.io.*,java.util.Locale" %><%@ página import="javax.servlet.*,javax.servlet.http.* "%><%@ página importación= "java.text.NumberFormat,java.util.Date" %><% String title = "Porcentaje específico de configuración regional"; //Obtener la configuración regional del cliente locale = request.getLocale( ); 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>Porcentaje formateado: <% out.print(formattedPerc); %></p></div></body></html>