English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Antes de começar, é necessário explicar alguns conceitos importantes:
Se você deseja criar um site globalizado, precisa se preocupar com uma série de projetos. Este capítulo detalha como lidar com problemas de internacionalização e fornece alguns exemplos para aprofundar o entendimento.
O contêiner JSP pode fornecer a versão correta da página com base no atributo locale do request. A seguir, é fornecida a sintaxe de como obter o objeto Locale através do objeto request:
java.util.Locale request.getLocale()
A tabela a seguir lista os métodos importantes do objeto Locale, usados para detectar a região e o idioma do objeto request. Todos esses métodos serão exibidos no navegador com o nome do país e do idioma:
Número | Método & Descrição |
---|---|
1 | String getCountry() Retorna o país/Código da região em maiúsculas, ou ISO 3166 2-Formato da região com letras |
2 | String getDisplayCountry() Retorna o nome do país a ser exibido para o usuário |
3 | String getLanguage() Retorna o código do idioma em minúsculas, ou ISO 639 Formato da região |
4 | String getDisplayLanguage() Retorna o nome do idioma a ser exibido para o usuário |
5 | String getISO3Country() Retorna o nome do país3Abreviação |
6 | String getISO3Language() Retorna o nome do idioma3Abreviação |
Este exemplo nos ensina como exibir idioma e país no JSP:
<%@ page import="java.io."*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <% //Obtendo informações de regionalização do cliente Locale locale = request.getLocale(); String language = locale.getLanguage(); String country = locale.getCountry(); %> <html <head <title>Detectando Local</title> </head> <body <center> <h1>Detectando Local</h1> </center> <p align="center"> <% out.println("Idioma: " + language + "<br />"); out.println("País: " + country + "<br />"); %> </p> </body> </html>
O JSP pode usar idiomas da Europa Ocidental para exibir uma página, como inglês, espanhol, alemão, francês, italiano etc. Portanto, configurar o Content-É importante definir o cabeçalho de informações de idioma para exibir todos os caracteres corretamente.
O segundo ponto é que é necessário usar entidades de caracteres HTML para exibir caracteres especiais, como "ñ" representa ñ,"¡" representa ¡ :
<%@ page import="java.io."*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <% // Definir tipo de conteúdo da resposta response.setContentType("text/html"); // Definir código de idioma espanhol. response.setHeader("Content"-"Language", "pt"); String title = "Em Português"; %> <html <head <title><% out.print(title); %></title> </head> <body <center> <h1><% out.print(title); %></h1> </center> <div align="center"> <p>Em Português</p> <p>?Hola Mundo!</p> </div> </body> </html>
Pode-se usar a classe java.text.DateFormat e seu método estático getDateTimeInstance() para formatar datas e horários. O exemplo a seguir mostra como formatar datas e horários com base na região específica:
<%@ 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 da região"; //Obter o Locale do 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> </center> <div align="center"> <p>Data local: <% out.print(date); %></p> </div> </body> </html>
Pode-se usar a classe java.text.NumberFormat e seu método estático getCurrencyInstance() para formatar números. Por exemplo, tipos long e double em moedas específicas da região. O exemplo a seguir mostra como formatar moedas com base na região específica:
<%@ 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 da região"; //Obter o Locale do 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> </center> <div align="center"> <p>Moeda formatada: <% out.print(formattedCurr); %></p> </div> </body> </html>
Pode-se usar a classe java.text.NumberFormat e seu método estático getPercentInstance() para formatar porcentagens. O exemplo a seguir nos mostra como formatar porcentagens com base na região específica:
<%@ 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 Locale"; //Obter o Locale do 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> </center> <div align="center"> <p>Porcentagem Formada: <% out.print(formattedPerc); %></p> </div> </body> </html>