ResourceBundle - Internationalisierung

inspector_71

Mitglied
Hi Leute, eine Frage:

Hab sämtliche Texte in properties Dateien abgelegt und mit

messages = ResourceBundle.getBundle("WebMessages", locale);

bekomm ich auch die entsprechenden Texte.

Soll ich nun das Bundle in der Session speichern?

session.setAttribute("messages", messages);

Um in den jsp Seiten wie folgt darauf zugreifen zu können:

<% ResourceBundle messages = (ResourceBundle)session.getAttribute("messages"); %>

und dann werden die Texte entsprechend ausgegeben:

<td><b><%=messages.getString("login_name")%></b></td>
<td><b><%=messages.getString("description")%></b></td>

Oder gibts da ne bessere Lösung?

Vielen Dank
 
Hi schnuffie!

Halt, geht ja gar nicht, ResourceBundle is non serializable, kann man gar nicht in die Session speichern... :-(

Soll ich das Bundle nun wirklich komplett in den ServletContext laden oder jedesmal in der JSP Seite erst laden?
 
Zuletzt bearbeitet:
Aber Du kannst eine Hilfsklasse als Singleton bauen, die dir dann dein Resourcebundle aus einer Map zurückgibt. Dann brauchst Du nur den Key speichern. ;)
 
Hi,

also ich verwende für die Internationalisierung ganz einfach die JSTL!

Einfach von der Sun Homepage downloaden, in den Libs Ordner kopieren und dann taglibs hinzufügen:

Code:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

bei mir liegt die Properties-Datei im Package "i18l" und die Datei heißt "lang_de.properties". In der Datei "lang_de.properties" einfach "hello_world = Hallo Welt!" angeben.

in der JSP:

Code:
<fmt:setLocale value="de"/>

<fmt:bundle basename="il18n.lang">
     <!-- um Hello World! zu übersetzen -->
     <fmt:message key="hello_world"/>
</fmt:bundle>
 
Danke für die Antworten, also, ich hab das ResourceBundle einstweilen doch in der Session gespeichert, funktioniert auch, nur musst ich dafür in der web-xml das <distributable/> löschen, sehr seltsam, oder?
 

Neue Beiträge

Zurück