Internationalisation JSP
Avant de commencer, plusieurs concepts importants doivent être expliqués :
Internationalisation (i18n) : indique qu'une page sera rendue dans différentes traductions en fonction de la langue ou du pays du visiteur.
Localisation (l10n) : Ajouter des ressources à un site Web pour l'adapter à différentes régions et cultures. Comme la version indienne du site.
Région : Il s'agit d'une région ou d'une culture spécifique, généralement considérée comme un marqueur linguistique et un marqueur national reliés par un trait de soulignement. Par exemple, « en_US » représente la région anglophone des États-Unis.
Si vous souhaitez créer un site Web mondial, vous devez vous soucier d'une série de projets. Ce chapitre vous expliquera en détail comment gérer les problèmes d'internationalisation et donnera quelques exemples pour approfondir votre compréhension.
Le conteneur JSP peut fournir la version correcte de la page en fonction de l'attribut locale de la requête. Ensuite, la syntaxe permettant d'obtenir l'objet Locale via l'objet de requête est donnée :
java.util.Locale request.getLocale()
Détection des paramètres régionaux
Le tableau suivant répertorie les méthodes les plus importantes de l'objet Locale, qui sont utilisées pour détecter la région, la langue et la région de l'objet de requête. Toutes ces méthodes afficheront le nom du pays et le nom de la langue dans le navigateur :
Numéro de série< / th> | Méthode et Description | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Chaîne getCountry()
<🎜> Renvoie le code du pays/de la région en anglais majuscule, ou la région au format ISO 3166 à 2 lettres | ||||||||||||||
2 | Chaîne getDisplayCountry()<🎜> <🎜> Renvoie le nom du pays à afficher à l'utilisateur | ||||||||||||||
3 | Chaîne getLanguage()<🎜> <🎜> Renvoie la minuscule anglaise du code de langue, ou la zone au format ISO 639 | ||||||||||||||
4 | Chaîne getDisplayLanguage()<🎜> <🎜> Renvoie le nom de la langue à afficher à l'utilisateur | ||||||||||||||
5 | Chaîne getISO3Country()<🎜> <🎜> Renvoie l'abréviation à 3 lettres du nom du pays | ||||||||||||||
6 | Chaîne getISO3Language()<🎜> <🎜> Renvoie l'abréviation à 3 lettres du nom de la langue |
Exemple de démonstration
Cet exemple nous indique comment afficher la langue et le pays dans 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 utiliser les langues d'Europe occidentale pour générer une page, telles que l'anglais, l'espagnol, l'allemand, le français, l'italien, etc. On voit qu'il est important de définir l'en-tête Content-Language pour afficher correctement tous les caractères.
Le deuxième point est que vous devez utiliser des entités de caractères HTML pour afficher les caractères spéciaux, tels que "ñ" représente "?", "¡" représente "?" :
<%@ 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 spécifiques aux paramètres régionaux
Vous pouvez utiliser la classe java.text.DateFormat et sa méthode statique getDateTimeInstance() pour formater les dates et les heures. L'exemple suivant montre comment formater les dates et les heures selon une plage spécifiée :
<%@ 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>
Les monnaies spécifiques à une région
peuvent utiliser la classe java.text.NumberFormat et sa méthode statique getCurrencyInstance() pour formater les nombres. Par exemple, long et double dans les devises spécifiques à une région. L'exemple suivant montre comment formater la devise en fonction de paramètres régionaux spécifiés :
<%@ 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>
Pourcentages spécifiques à une région
Les pourcentages peuvent être formatés à l'aide de la classe java.text.NumberFormat et de sa méthode statique getPercentInstance(). L'exemple suivant nous montre comment formater des pourcentages en fonction d'une plage 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 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>