English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Herramientas en línea
Antes de comenzar, veamos tres términos importantes:18n):Esto significa que un sitio web ofrece diferentes versiones de contenido traducido al idioma o país de origen del visitante.
Localización (l10n):Esto significa agregar recursos al sitio web para que se adapte a una región geográfica o cultural específica, por ejemplo, la traducción del sitio web al hindi (Hindi).
Configuración regional (locale):Es un área cultural o geográfica especial. Generalmente se refiere a un símbolo de idioma seguido de un guión bajo y un símbolo de país. Por ejemplo, "en_US" representa la configuración regional del inglés para EE. UU.
Al crear un sitio web global, hay ciertos aspectos a tener en cuenta. Este tutorial no explicará todos los detalles de estos aspectos, pero le mostrará cómo presentar las páginas web en diferentes idiomas a través de la ubicación diferenciada (es decir, la configuración regional) con un excelente ejemplo.
Los Servlet pueden obtener la versión correspondiente del sitio web según la configuración regional del solicitante y proporcionar la versión del sitio web correspondiente según el idioma, la cultura y las necesidades locales. A continuación, se muestra el método que devuelve el objeto Locale en el objeto request.
java.util.Locale request.getLocale()
A continuación, se enumeran los métodos de configuración regional importantes, que puede usar para detectar la ubicación geográfica, el idioma y la configuración regional del solicitante. Todos los métodos enumerados muestran el nombre del país y el nombre del idioma configurados en el navegador del solicitante.
Número de secuencia | Método & Descripción |
---|---|
1 | String getCountry() Este método utiliza 2 Una forma de mayúsculas de ISO 3166 /Este método devuelve el código de región de la configuración regional en formato. |
2 | String getDisplayCountry() |
3 | String getLanguage() 639 |
4 | String getDisplayLanguage() |
5 | 3Country() Este método devuelve el acrónimo de tres letras del país de la configuración regional. |
6 | 3Language() Este método devuelve el acrónimo de tres letras del idioma de la configuración regional. |
Este ejemplo muestra cómo mostrar el idioma y el país relacionados de una solicitud:
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 = "Detectar configuración regional"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor="#f0f0f0">\n" + "<h1 align="center">" + idioma + "</h1>\n" + "<h2 align="center">" + país + "</h2>\n" + "</body></html>"); } }
El Servlet puede generar páginas escritas en idiomas de Europa Occidental (como inglés, español, alemán, francés, italiano, holandés, etc.). Aquí, para poder mostrar todos los caracteres correctamente, se establece Content-La cabecera Language es muy importante.
El segundo punto es utilizar entidades HTML para mostrar todos los caracteres especiales, por ejemplo, "ñ" representa "ñ" y "¡" representa "¡" como se muestra a continuación:
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(); // Establecer código de idioma español response.setHeader("Content-Language", "es"); String title = "En Español"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor="#f0f0f0">\n" + "<h1">" + "En Español:" + "</h1>\n" + "<h1">" + "¡Hola Mundo!" + "</h1>\n" + "</body></html>"); } }
Puede utilizar la clase java.text.DateFormat y su método estático getDateTimeInstance() para formatear fechas y horas específicas de la configuración regional. A continuación, se muestra un ejemplo de cómo formatear una fecha específica de una configuración regional dada:
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 = "Fecha específica del entorno regional"; 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>"); } }
Puede usar la clase java.text.NumberFormat y su método estático getCurrencyInstance() para formatear números (por ejemplo, de tipo long o double) como moneda específica del entorno regional. A continuación se muestra un ejemplo de cómo formatear monedas específicas de un entorno regional dado:
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 = "Moneda específica del entorno regional"; 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>"); } }
Puede usar la clase java.text.NumberFormat y su método estático getPercentInstance() para formatear porcentajes específicos del entorno regional. A continuación se muestra un ejemplo de cómo formatear porcentajes específicos de un entorno regional dado:
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>"); } }