JSTL Ressourcen-Bundle für Internationalisierung und Lokalisierung
Haben wir eine Anwendung, mit der basic JSP/servlet, das alle Texte, die derzeit in englischer Sprache ist hart codiert in den JSP-Seiten. Wir erwägen, über internationalizations unserer app, also brauchen wir irgendeine Art von Möglichkeiten, um zu extrahieren den text in properties-Datei.
Hier ist, was ich bisher getan habe:
1) Erstellen Sie eine Datei namens XXXXX-messages_en.properties
, fügen Sie den Schlüssel/Wert-paar in der properties-Datei, z.B. AAAAA = Hello World
2) Last JSTL relevanten taglibs in die JSP-Seite
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
3) Ersetzen Sie den vorherigen text mit
<fmt:message key="AAAAA" bundle="${XXXXX}"/>
4) Hinzufügen setBundle-tag in der JSP-Seite:
<fmt:setBundle basename="XXXXX-messages" var="XXXXX"/>
Und starten Sie den server neu, alles wird korrekt angezeigt.
Aber meine Frage bezüglich der Verwendung von JSTL Internationalisierung Bibliothek:
FRAGE 1) Es scheint, dass muss ich hinzufügen <fmt:setBundle>
tag in jeder einzelnen JSP-Seiten, und das ist ein bisschen hässlich und wenn etwas braucht, um sich in Zukunft ändern (Namen ändern?) dies wird das Leben schwieriger.
Muss ich denken, vielleicht kann ich eine eigene Seite anlegen und diese <fmt:setBundle>
in Sie, und dann schließen Sie diese Seite mit <jsp:include>
. Oder kann ich Spritzen über einen servlet-filter? Ich würde sagen, ich bin nicht ganz glücklich mit beidem.
Ist gibt es eine empfohlene Weg, dies zu tun?
FRAGE 2) Wie legen Sie eine default-Sprache, wenn es keine übereinstimmung properties-Datei gibt? Ich habe getestet, in meinem Fall, wenn ich <fmt:setLocale>
in die JSP-Seite mit einem französischen Sprache, kann die Seite immer noch korrekt geladen. Bedeutet das, dass die englische version ist immer die Standard oder ist es einfach nur weil mein Betriebssystem/browser ist Englisch?
Was passiert, wenn ein Chinese/Japaner Benutzer meiner Seite und ich habe sowohl Englisch als auch Französisch properties-Datei gibt es?
InformationsquelleAutor der Frage Yudong Li | 2012-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einen fallback-Gebietsschema zu lösen, Ihre zweite Frage:
http://onjava.com/onjava/2002/09/11/jstl2.html
InformationsquelleAutor der Antwort Jasper de Vries
OK, ich fand die Art und Weise, meine eigenen zu lösen Frage 1.
Im Grunde, was ich tun müssen, ist, dass in web.xml:
Dadurch kann ich speichern Sie den tag setBundle in jeder jsp-Seiten.
InformationsquelleAutor der Antwort Yudong Li
Unten ist die JSP-Vorlage erstellt mit JSTL, kann jemand helfen einbinden JSTL Ressourcen-Bundle für Internationalisierung und Lokalisierung.
Vorlage.tag
Unten ist die Hause.jsp - Datei mit dem header.jsp und Fußzeile.jsp enthalten, zusammen mit dem Körper.
Hause.jsp
web.xml Datei
InformationsquelleAutor der Antwort Dinesh Lomte