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 occuper d’une série d’éléments. 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 de page correcte 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()
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 | Méthode et description |
|---|---|
| 1 | String getCountry() renvoie le code du pays/région en anglais majuscule, ou la région au format ISO 3166 à 2 lettres |
| 2 | String getDisplayCountry() renvoie le nom du pays à afficher à l'utilisateur |
| 3 | String getLanguage() renvoie la version anglaise minuscule du code de langue, ou la zone au format ISO 639 |
| 4 | String getDisplayLanguage() renvoie le nom de la langue à afficher à l'utilisateur |
| 5 | String getISO3Country() renvoie l'abréviation à 3 lettres du nom du pays |
| 6 | String getISO3Language() renvoie l'abréviation à 3 lettres du nom de la langue |
Cet exemple nous montre comment afficher la langue et le pays dans JSP :
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% //Obtenir des clients Informations de localisation du terminal Locale locale = request.getLocale(); String language = locale.getLanguage(); String country = locale.getCountry(); %><html><head><title>Détection Paramètres régionaux</title></head><body><center><h1>Détection des paramètres régionaux</h1></center><p align="center"><% out.println("Langue : " + langue + " <br />"); out.println("Pays : " + pays + "<br />");%></p></body></html>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. Par exemple, "ñ" représente "?"
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% // Définir la réponse type de contenu réponse.setContentType("text/html"); // Définir le code de la langue espagnole réponse.setHeader("Content-Language", "es"); %><html><head><titre><% out.print(titre); %></title></head><body><center><h1><% out.print(titre %>); </h1></center><div align="center"><p>En Espa?ol</p><p>?Hola Mundo !</p></div></body></html>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 = "Dates spécifiques aux paramètres régionaux" //Obtenir les paramètres régionaux du client locale = request.getLocale( ); DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.SHORT, locale).format(new Date( )); %><html><head><title><% out.print(title); /head><body><center><h1><% out.print(title); %></h1></center><div align="center"><p>Date locale : <% out.print(date); %></p></div></body></html>
Les nombres peuvent être formatés à l'aide de la classe java.text.NumberFormat et de sa méthode statique getCurrencyInstance(). Par exemple, long et double dans les devises spécifiques à une région. L'exemple suivant montre comment formater une 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 = "Devise spécifique à la localisation" //Obtenir la localisation du client locale = request.getLocale( ); NumberFormat.getCurrencyInstance(locale); String formattedCurr = nft.format(1000000); %><html><head><title><% out.print %></title></head><body> <center><h1><% out.print(title); %></h1></center><div align="center"><p>Devise formatée : <% out.print(formattedCurr); %></p></div></body></html>
Vous pouvez formater des pourcentages à l'aide de la classe java.text.NumberFormat et de sa méthode statique getPercentInstance(). L'exemple suivant nous montre comment formater un pourcentage basé sur 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 = "Pourcentage spécifique à la localisation" ; //Obtenir la localisation du client locale = request.getLocale( ); NumberFormat.getPercentInstance(locale); String formattedPerc = nft.format(0.51); %><html><head><title><% out.print %></title></head><body> <center><h1><% out.print(title); %></h1></center><div align="center"><p>Pourcentage formaté : <% out.print(formattedPerc); %></p></div></body></html>