Bundle de ressources JSTL pour l'internationalisation et la localisation
Nous avons une application qui aide de la base de JSP/servlet que tous les textes actuellement en anglais est codé en dur dans les pages JSP. Nous envisageons sur internationalizations de notre application, nous avons donc besoin d'une sorte de façons d'extraire le texte dans le fichier de propriétés.
Voici ce que j'ai fait jusqu'à présent:
1) Créez un fichier appelé XXXXX-messages_en.properties
, ajoutez la paire clé/valeur dans le fichier de propriétés, par exemple AAAAA = Hello World
2) Charge de JSTL pertinentes taglibs dans la page JSP
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
3) Remplacer le texte précédent avec
<fmt:message key="AAAAA" bundle="${XXXXX}"/>
4) Ajouter setBundle tag dans la page JSP:
<fmt:setBundle basename="XXXXX-messages" var="XXXXX"/>
Et redémarrez le serveur, tout s'affiche correctement.
Cependant, ma question concerne l'utilisation de la JSTL l'internationalisation de la bibliothèque est:
La QUESTION 1), Il semble que je dois ajouter <fmt:setBundle>
tag dans chacun de singe pages JSP, qui est un peu moche et si quelque chose doit changer dans le futur (changement de nom?) cela va rendre la vie plus difficile.
J'ai pense que peut-être je peux créer une page séparée, et les mettre cette <fmt:setBundle>
et ensuite, d'inclure cette page à l'aide de <jsp:include>
. Ou je peux injecter ce par l'intermédiaire d'un filtre de servlet? Je dirais que je ne suis pas tout à fait heureux avec soit des options.
Est-il recommandé de faire cela?
La QUESTION 2) Comment spécifier une langue par défaut si aucune correspondance n'est trouvée fichier de propriétés? Je l'ai testé dans mon cas, si j'ai mis <fmt:setLocale>
dans la page JSP avec un français, la page peut toujours correctement chargé. Est-ce à dire que la version anglaise est toujours la valeur par défaut ou est-ce simplement parce que mon système d'exploitation/navigateur est en anglais?
Ce qui va se passer si un Chinois/Japonais utilisateur d'ouvrir ma page et j'ai à la fois l'anglais et le français fichier de propriétés?
source d'informationauteur Yudong Li
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les paramètres régionaux de secours pour résoudre votre deuxième question:
http://onjava.com/onjava/2002/09/11/jstl2.html
OK, j'ai trouvé la solution à ma propre question 1.
Fondamentalement, ce que je dois faire est de mettre dans web.xml:
En faisant cela, je peux enregistrer l'étiquette de setBundle dans chacune des pages jsp.
Ci-dessous est la JSP modèle créé à l'aide de JSTL, peut aider une personne à intégrer JSTL regroupement de Ressources pour l'Internationalisation et de la Localisation.
modèle.tag
Ci-dessous est la la maison.jsp dossier présentant les en-tête.jsp et pied de page.jsp inclus avec le corps.
la maison.jsp
web.xml fichier