English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ferramentas online
Antes de começarmos, vamos ver três termos importantes:18n):Isso significa que um site oferece versões de conteúdo traduzidas em diferentes idiomas ou nacionalidades do visitante.
Localização (l10n):Isso significa adicionar recursos ao site para torná-lo adequado para uma região geográfica ou cultural específica, por exemplo, traduzir o site para o Hindi.
Configuração regional (locale):Esta é uma cultura ou região geográfica especial. Geralmente se refere a um símbolo de idioma seguido de um sublinhado e um símbolo de país. Por exemplo, "en_US" representa a configuração regional do inglês para os EUA.
Ao criar um site global, há algumas considerações a serem tomadas. Este tutorial não explicará todos os detalhes dessas considerações, mas ele mostrará como fazer com que uma página da web seja apresentada em diferentes idiomas por meio de localização diferenciada (ou seja, configurações regionais).
Servlet pode escolher a versão apropriada do site com base nas configurações regionais do solicitante e fornecer a versão apropriada do site com base no idioma, cultura e necessidades locais. A seguir estão os métodos retornados pelo objeto request que retornam o objeto Locale.
java.util.Locale request.getLocale()
A seguir está uma lista das configurações regionais importantes, que você pode usar para detectar a localização, idioma e configurações regionais do solicitante. Todos os métodos a seguir mostram o nome do país e o nome do idioma configurados no navegador do solicitante.
Número de série | Método & Descrição |
---|---|
1 | String getCountry() Este método usa 2 Uma grande letra ISO 3166 Formato retorna o código do país da configuração regional/ |
2 | String getDisplayCountry() |
3 | String getLanguage() Este método retorna o código ISO de três letras da configuração regional em minúsculas. 639 |
4 | String getDisplayLanguage() |
5 | 3Country() Este método retorna a abreviação de três letras do país da configuração regional. |
6 | 3Language() Este método retorna a abreviação de três letras do idioma da configuração regional. |
Este exemplo demonstra como exibir o idioma e o país relacionados a uma solicitação:
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 { // Obter a Configuração Regional do Cliente Locale locale = request.getLocale(); String language = locale.getLanguage(); String country = locale.getCountry(); // Configurar o Tipo de Conteúdo da Resposta response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "Detecção de configuração regional"; 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>"); } }
Servlet pode emitir páginas escritas em idiomas da Europa Ocidental (como inglês, espanhol, alemão, francês, italiano, holandês, etc.). Aqui, para exibir corretamente todos os caracteres, configure o Content-O cabeçalho Language é muito importante.
O segundo ponto é usar entidades HTML para exibir todos os caracteres especiais, por exemplo, "ñ" representa "ñ", "¡" representa "¡", conforme mostrado a seguir:
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 { // Configurar o Tipo de Conteúdo da Resposta response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // Configurar código de idioma espanhol response.setHeader("Content-Language", "pt"); String title = "Em Português"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor="#f0f0f0">\n" + "<h1>" + "Em Português:" + "</h1>\n" + "<h1>" + "¡Olá Mundo!" + "</h1>\n" + "</body></html>"); } }
Você pode usar a classe java.text.DateFormat e o método estático getDateTimeInstance() para formatar datas e horários específicos do ambiente regional. Abaixo está um exemplo de como formatar uma data específica de um ambiente regional dado:
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 { // Configurar o Tipo de Conteúdo da Resposta response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // Obter a Configuração Regional do Cliente Locale locale = request.getLocale( ); String date = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.SHORT, locale).format(new Date( )); String title = "Data específica do locale"; 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>"); } }
Você pode usar a classe java.text.NumberFormat e seu método estático getCurrencyInstance() para formatar números (por exemplo, tipos long ou double) como moeda específica do locale. O exemplo a seguir demonstra como formatar moeda específica de um locale给定:
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 { // Configurar o Tipo de Conteúdo da Resposta response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // Obter a Configuração Regional do Cliente Locale locale = request.getLocale( ); NumberFormat nft = NumberFormat.getCurrencyInstance(locale); String formattedCurr = nft.format(1000000); String title = "Moeda específica do locale"; 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>"); } }
Você pode usar a classe java.text.NumberFormat e seu método estático getPercentInstance() para formatar porcentagens específicas do locale. O exemplo a seguir demonstra como formatar porcentagens específicas de um locale给定:
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 { // Configurar o Tipo de Conteúdo da Resposta response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // Obter a Configuração Regional do Cliente Locale locale = request.getLocale( ); NumberFormat nft = NumberFormat.getPercentInstance(locale); String formattedPerc = nft.format(0.51); String title = "Percentual Específico da Região"; 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>"); } }