tomcat-taglibs-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kris Schneider <k...@dotech.com>
Subject RE: How to create a general resource bundle for JSTL?
Date Thu, 10 Jul 2003 12:19:33 GMT
Since it sounds like Eric's got the JSTL locale part working, I think he just
needs to do:

Config.set(request,
           Config.FMT_LOCALIZATION_CONTEXT,
           "ch.xobix.i18n.translations.X2Resources");

You can use either a String (bundle basename) or LocalizationContext for the
third arg.

Quoting Martin van Dijken <mvdijken@madocke.nl>:

> Hey eric,
> 
> Back to the original problem. As said I'm working in the same direction as
> you are so I've solved the problem for my own needs as well. 
> 
> Setting the bundle can be done using:
> 
> ResourceBundle bundle = ResourceBundle.getBundle("Test",new
> Locale("nl","NL"));
> LocalizationContext ctx = new LocalizationContext(bundle);
> 
> and then:
> 
> Config.set(request,Config.FMT_LOCALIZATION_CONTEXT,ctx);
> 
>  OR
> 
>
request.setAttribute("javax.servlet.jsp.jstl.fmt.localizationContext.request",ctx);
> 
> As some of these guys will tell you, the latter solution is rather bad as it
> depends on the inner workings of the Config object. I had to get all the way
> that far however to understand how it works. I found the JSTL documentation a
> little vague on the subject.
> 
> Martin van Dijken
> 
> 
> > -----Original Message-----
> > From: Eric.Lewis@swissinfo.ch [mailto:Eric.Lewis@swissinfo.ch]
> > Sent: dinsdag 8 juli 2003 16:29
> > To: taglibs-user@jakarta.apache.org
> > Subject: RE: How to create a general resource bundle for JSTL?
> > 
> > 
> > Hi Martin
> > 
> > Thanks for the answer. However, your solution relies on JSTL 
> > alone, and this
> > works for me without any problems (see my code).
> > What doesn't work is setting a resource bundle with my Java 
> > class, without
> > having to set the bundle in the JSP.
> > 
> > Best regards,
> > Eric
> > 
> > -----Original Message-----
> > From: Martin van Dijken [mailto:mvdijken@madocke.nl]
> > Sent: Montag, 7. Juli 2003 15:58
> > To: Tag Libraries Users List
> > Subject: RE: How to create a general resource bundle for JSTL?
> > 
> > 
> > Hey Eric,
> > 
> > Let me give you an educated yet untested guess. I'm not very 
> > experienced
> > with JSTL, but noticed you weren't getting any response so 
> > let me try. 
> > 
> > Have you tried setting the Locale of the ServletResponse 
> > object? I'm not
> > 100% certain, but it seems to me JSTL *SHOULD* check this 
> > when using their
> > I18N tags. Furthermore if you want to use a resource bundle 
> > for a bunch of
> > tags it might do you some good to put the other I18N tags 
> > below them as
> > nested tags:
> > 
> > <fmt:setBundle basename="vulgarInsults"/>
> > 
> > <!-- Notice how the bundle tag surrounds the others... -->
> > <fmt:bundle basename="org.apache.bookies">
> >   <fmt:message key="threat" >
> >     <fmt:param value="${address}"/>
> >     <fmt:param value="${numberOfChildren}"/>
> >     <fmt:param value="${nameOfSpouse}"/>
> >   </fmt:message>
> > </fmt:bundle>
> > 
> > Greetings,
> > 
> > Martin van Dijken
> > Madocke Interactive Media
> > 
> > 
> > > Hi all
> > > 
> > > Till now, all JSP pages in our application had to have the 
> > > following header
> > > for internationalization:
> > > <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
> > > <fmt:setLocale value="${currentLocale}"/>
> > > <fmt:setBundle basename="ch.xobix.i18n.translations.X2Resources"
> > > var="bundle" scope="page"/>
> > > 
> > > Then a message would be output like this:
> > > <fmt:message key="longWeekday_0" bundle="${bundle}"/>
> > > 
> > > Note that "currentLocale" is set by the controller, and
> > > ch.xobix...X2Resources is a class that loads the messages 
> > > from a database
> > > table.
> > > This works well, however I think it's tedious for the web 
> > > designer to do
> > > this manually all the time.
> > > 
> > > My goal is to have the following:
> > > <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
> > > 
> > > And the message output like this:
> > > <fmt:message key="longWeekday_0"/>
> > > 
> > > So I tried to set it in the controller, as described in "JSTL 
> > > in Action". I
> > > managed to set the Locale right, but I don't know how to do 
> > > the same with
> > > the resources. First I tried according to the book to create a
> > > ResourceBundle and a Locale and set JSTL's 
> > > FMT_LOCALIZATIONCONTEXT (does
> > > anyone know why this is written like this?). Didn't work...
> > > 
> > > Now I've seen that I can change the web.xml to read
> > > <web-app>
> > >    ...
> > >    <context-param>
> > >  
> > > <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</pa
> > > ram-name>
> > >       
> > > <param-value>ch.xobix.i18n.translations.X2Resources</param-value>
> > >    </context-param>
> > >    ...
> > > </web-app>
> > > 
> > > Now, in the controller, I set the Locale with
> > > Config.set(this.getRequest(), Config.FMT_LOCALE, <the 
> > > language code> );
> > > 
> > > and I see it in Tomcat's output:
> > > DEBUG  - Request: javax.servlet.jsp.jstl.fmt.locale = it   
> > > (when changing to
> > > Italian)
> > > 
> > > BUT the message itself doesn't change!
> > > 
> > > What am I doing wrong? Or how should I do it right?
> > > 
> > > Also, has anyone of you succeeded in dynamically changing 
> > > resources? Right
> > > now, when someone enters a new key in the database, we have 
> > to restart
> > > Tomcat.
> > > 
> > > 
> > > Thanks for any help!
> > > Eric

-- 
Kris Schneider <mailto:kris@dotech.com>
D.O.Tech       <http://www.dotech.com/>

---------------------------------------------------------------------
To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: taglibs-user-help@jakarta.apache.org


Mime
View raw message