Antes de começarmos, vários conceitos importantes precisam ser explicados:
Internacionalização (i18n): Indica que uma página será renderizada em diferentes traduções com base no idioma ou país do visitante.
Localização (l10n): Adicionar recursos a um site para adaptá-lo a diferentes regiões e culturas. Como a versão indiana do site.
Região: Esta é uma região ou cultura específica, geralmente considerada um marcador linguístico e um marcador nacional conectado por um sublinhado. Por exemplo, "en_US" representa a região de língua inglesa dos Estados Unidos.
Se você deseja construir um site global, precisa cuidar de uma série de itens. Este capítulo explicará detalhadamente como lidar com questões de internacionalização e dará alguns exemplos para aprofundar sua compreensão.
O contêiner JSP pode fornecer a versão correta da página com base no atributo locale da solicitação. A seguir, é fornecida a sintaxe de como obter o objeto Locale por meio do objeto request:
java.util.Locale request.getLocale()
A tabela a seguir lista os métodos mais importantes no objeto Locale, que são usados para detectar a região, o idioma e a região do objeto de solicitação. Todos esses métodos exibirão o nome do país e o nome do idioma no navegador:
número de série | Método e Descrição |
---|---|
1 | String getCountry() retorna o código do país/região em letras maiúsculas em inglês ou a região no formato ISO 3166 de 2 letras |
2 | String getDisplayCountry() retorna o nome do país a ser exibido ao usuário |
3 | String getLanguage() retorna a versão em letras minúsculas em inglês do código do idioma ou a área no formato ISO 639 |
4 | String getDisplayLanguage() retorna o nome do idioma a ser exibido ao usuário |
5 | String getISO3Country() retorna a abreviatura de 3 letras do nome do país |
6 | String getISO3Language() retorna a abreviação de 3 letras do nome do idioma |
Este exemplo nos mostra como exibir o idioma e o país em JSP:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% //Conseguir clientes Informações de localização do terminal Locale locale = request.getLocale(); Localidade</title></head><body><center><h1>Detectando localidade</h1></center><p align="center"><% out.println("Idioma: " + idioma + " <br />"); out.println("País: " + país + "<br />");%></p></body></html>
JSP pode usar idiomas da Europa Ocidental para gerar uma página, como inglês, espanhol, alemão, francês, italiano, etc. Pode-se observar que é importante definir o cabeçalho Content-Language para exibir todos os caracteres corretamente.
O segundo ponto é que você precisa usar entidades de caracteres HTML para exibir caracteres especiais, "ñ" representa "?"
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% // Definir resposta tipo de conteúdo response.setContentType("text/html"); // Definir código do idioma espanhol. %><html><head><title><% out.print(title></head><body><center><h1><% out.print(title %>); </h1></center><div align="center"><p>En Espa?ol</p><p>?Olá Mundo!</p></div></body></html>
Você pode usar a classe java.text.DateFormat e seu método estático getDateTimeInstance() para formatar datas e horas. O exemplo a seguir mostra como formatar datas e horas de acordo com um intervalo especificado:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><%@ page import= "java.text.DateFormat,java.util.Date" %><% String title = "Datas específicas do local" //Obter o local do 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>Data local: <%; out.print(data); %></p></div></body></html>
Os números podem ser formatados usando a classe java.text.NumberFormat e seu método estático getCurrencyInstance(). Por exemplo, long e double em moedas específicas da região. O exemplo a seguir mostra como formatar a moeda de acordo com um código de idioma especificado:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><%@ page import= "java.text.NumberFormat,java.util.Date" %><% String title = "Moeda específica do local" //Obter o local do cliente Locale = request.getLocale(); NumberFormat.getCurrencyInstance(locale); String formattedCurr = nft.format(1000000); <center><h1><% out.print(title); %></h1></center><div align="center"><p>Moeda formatada: <% out.print(formattedCurr);
Você pode formatar porcentagens usando a classe java.text.NumberFormat e seu método estático getPercentInstance(). O exemplo a seguir nos mostra como formatar uma porcentagem com base em um intervalo especificado:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><%@ page import= "java.text.NumberFormat,java.util.Date" %><% String title = "Porcentagem específica do local" //Obter o local do cliente Locale = request.getLocale(); NumberFormat.getPercentInstance(locale); String formattedPerc = nft.format(0.51); <center><h1><% out.print(title %></h1></center><div align="center"><p>Porcentagem formatada: <%); out.print(formatadoPerc %></p></div></body></html>);