Latest web development tutorials

JSP internationalisation

Avant de commencer, vous devez expliquer quelques concepts importants:

  • Internationalisation (i18n): indique qu'une page basée sur la langue ou le pays du visiteur présenté différentes traductions.
  • Localisation (l10n): ajouter des ressources au site, afin de l'adapter aux différentes régions et cultures. Par exemple, les versions linguistiques indiennes du site.
  • Région: Ceci est une région ou d'une culture, généralement considéré comme un langage des signes et des symboles nationaux sont reliés par un trait de soulignement. Tels que "en_US" pour les régions des États-Unis Anglais.

Si vous voulez créer un site Web mondial, vous avez besoin d'être préoccupé par un certain nombre de projets. Ce chapitre vous montrera en détail comment faire face aux problèmes internationaux, et donne quelques exemples pour approfondir la compréhension.

conteneur JSP peut demander en fonction de l'attribut de paramètres régionaux pour fournir la bonne version de la page. Ensuite, nous montrons comment obtenir un objet Locale par la syntaxe d'objet de requête:

java.util.Locale request.getLocale() 

Détection Locale

Le tableau suivant présente un objet Locale méthode plus importante pour la détection de la demande région objet, de la langue et de la région. Toutes ces méthodes affichera le nom du pays et le nom de la langue dans le navigateur:

Non . Méthode & Description
1 Chaîne getCountry ()

Back Country Code région / zone de la capitale, ou 3166 format ISO à 2 lettres
2 Chaîne getDisplayCountry ()

Retourne le nom du pays à afficher à l'utilisateur
3 Chaîne getLanguage ()

Retourne le code de langue en minuscules anglais ou régionaux ISO 639 formats
4 Chaîne getDisplayLanguage ()

Retour à donner à l'utilisateur de voir le nom de la langue
5 Chaîne getISO3Country ()

Renvoie le nom de trois lettres de l'abréviation du pays
6 Chaîne getISO3Language ()

3 renvoie le nom de la langue initiales

Exemples Démo

Cet exemple montre comment afficher la langue et le pays dans la 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>

Paramètres de langue

JSP peut être utilisé pour la production d'une page pour les langues d'Europe occidentale, comme l'anglais, espagnol, allemand, français, italien et ainsi de suite. Ainsi, définissez les informations d'en-tête Content-Language affiche correctement tous les caractères sont très importants.

Le deuxième point est, nous devons utiliser des entités de caractères HTML pour afficher des caractères spéciaux, tels que "& # 241;" représente "& # 161;" représente le "?": "?"

<%@ 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>

dates régionales

Vous pouvez utiliser la classe java.text.DateFormat et ses méthodes statiques getDateTimeInstance () à la date et l'heure le format. L'exemple suivant montre comment formater en fonction de la zone spécifiée de la date et l'heure:

<%@ 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>

monnaies spécifiques à la région

Vous pouvez utiliser la classe java.text.NumberFormat et ses méthodes statiques getCurrencyInstance () vers les numéros de format. Par exemple, dans une région particulière de type long de la monnaie et de type double. L'exemple suivant montre comment formater en fonction de la zone Monnaie spécifiée:

<%@ 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>

Un certain pourcentage de la superficie

Vous pouvez utiliser la classe java.text.NumberFormat et ses méthodes statiques getPercentInstance () à des pourcentages de format. L'exemple suivant montre comment formater selon le pourcentage spécifié de la zone:

<%@ 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>