JSP Internacionalização
Antes de começar, você precisa explicar alguns conceitos importantes:
- Internacionalização (i18n): indica que uma página com base no idioma do visitante ou do país apresentaram diferentes traduções.
- Localização (l10n): adicionar recursos para o site, a fim de adaptá-lo às diferentes regiões e culturas. Por exemplo, as versões linguísticas indígenas do local.
- Área: Esta é uma região específica ou cultura, geralmente considerada como uma linguagem de sinais e símbolos nacionais estão ligados por um sublinhado. Tal como "en_US" para as regiões dos Estados Unidos Inglês.
Se você quiser criar um site global, você precisa estar preocupado com uma série de projetos. Este capítulo irá mostrar-lhe em detalhe como lidar com questões internacionais, e dá alguns exemplos para aprofundar a compreensão.
JSP recipiente pode solicitar de acordo com o atributo de localidade para fornecer a versão correcta da página. Em seguida, mostramos como obter um objeto Locale pelo pedido sintaxe de objeto:
java.util.Locale request.getLocale()
Detecção Locale
A tabela seguinte lista um objeto Locale método mais importante para a detecção de solicitação região objeto, linguagem e região. Todos estes métodos irá exibir o nome do país e o nome do idioma no navegador:
Não. | Method & descrição |
---|---|
1 | Cordas getCountry () Back Country código de região / área da capital, ou o formato de 2 letras ISO 3166 |
2 | Cordas getDisplayCountry () Retorna o nome do país a ser exibida para o usuário |
3 | Cordas getLanguage () Retorna o código de idioma em minúsculas Inglês, ou formatos regionais ISO 639 |
4 | Cordas getDisplayLanguage () Voltar para dar ao usuário para ver o nome da língua |
5 | Cordas getISO3Country () Retorna o nome de três letras do país |
6 | Cordas getISO3Language () 3 retorna as iniciais do nome linguagem |
Exemplos Demonstração
Este exemplo demonstra como exibir o idioma eo país no JSP:
<%@ page import="java.io.*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <% //获取客户端本地化信息 Locale locale = request.getLocale(); String language = locale.getLanguage(); String country = locale.getCountry(); %> <html> <head> <title>Detecting Locale</title> </head> <body> <center> <h1>Detecting Locale</h1> </center> <p align="center"> <% out.println("Language : " + language + "<br />"); out.println("Country : " + country + "<br />"); %> </p> </body> </html>
Configurações de idioma
JSP pode ser usado para saída de uma página para idiomas da Europa Ocidental, como o Inglês, espanhol, alemão, francês, italiano e assim por diante. Assim, definir as informações de cabeçalho Content-Language exibe corretamente todos os caracteres são muito importantes.
O segundo ponto é, nós precisamos usar entidades de caracteres HTML para exibir caracteres especiais, como "& # 241;" representa "& # 161;" representa o "?": "?"
<%@ page import="java.io.*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <% // Set response content type response.setContentType("text/html"); // Set spanish language code. response.setHeader("Content-Language", "es"); String title = "En Espa?ol"; %> <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>
datas específicas regionais
Você pode usar a classe java.text.DateFormat e seus métodos estáticos getDateTimeInstance () até à data e hora formato. Este próximo exemplo mostra como formatar de acordo com a área especificada da data e hora:
<%@ page import="java.io.*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <%@ page import="java.text.DateFormat,java.util.Date" %> <% String title = "Locale Specific Dates"; //Get the client's Locale 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>Local Date: <% out.print(date); %></p> </div> </body> </html>
moedas específicas da região
Você pode usar a classe java.text.NumberFormat e seus métodos estáticos getCurrencyInstance () para formatar números. Por exemplo, em uma região particular do tipo de moeda de comprimento e tipo double. O exemplo a seguir mostra como formatar de acordo com a moeda área especificada:
<%@ page import="java.io.*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <%@ page import="java.text.NumberFormat,java.util.Date" %> <% String title = "Locale Specific Currency"; //Get the client's Locale 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>Formatted Currency: <% out.print(formattedCurr); %></p> </div> </body> </html>
Uma certa percentagem da área
Você pode usar a classe java.text.NumberFormat e seus métodos estáticos getPercentInstance () para percentagens de formato. O exemplo a seguir demonstra como formatar de acordo com a porcentagem especificada da área:
<%@ page import="java.io.*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%> <%@ page import="java.text.NumberFormat,java.util.Date" %> <% String title = "Locale Specific Percentage"; //Get the client's Locale 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>Formatted Percentage: <% out.print(formattedPerc); %></p> </div> </body> </html>