Latest web development tutorials

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>