dev@woodstock.java.net

Re: Localization on the fly

From: richard ratta <Richard.Ratta_at_Sun.COM>
Date: Wed, 03 Dec 2008 20:19:33 -0500

You're right, its not a good way to do this ;)

If this is for your private web app and not a change to the Woodstock
code, then
that's different but if you plan on changing woodstock then I would
suggest you not do that.


But given that the code has "JSFThemeContext" means that you should not
have to
do this at all. There is something else going on that is not allowing
the browser
locale to control the locale of the components.

Note that in order for the locale to change, a request for the whole
page must be
made. It cannot be an ajax request for a single component, in case you
are using
ajax in your page.

Also make sure you are satisfying all the JSF requirements of listing the
supported locales in the faces config file.

I'm not sure but if this is an early version of woodstock then there was
a bug
where supported locales must be listed in the web.xml of the web app.
I can't remember when that was fixed, but it was in a version when
the "JSFThemeContext" came into being. This new theme code eliminated
the need for supported locales to be listed in web.xm of the web app
but in the early release of it, I think there was a bug.

The real answer is to upgrade to the later version of the components.

-rick

mike.r.phillips wrote:

>We are using woodstock version ...
>Created-By: 1.5.0_06-b05 (Sun Microsystems Inc.)
>Implementation-Title: Woodstock Components 4.0 Theme: suntheme
>
>The link you gave me gave me an idea. It may be a bad idea but it works.
>If I use the following code the page renders with the new locale information
>even for the
>woodstock components. It is not automatic but at least I can bind it to a
>choose locale button, and
>work from there.
> public String button3_action()
> {
> FacesContext fc = this.getFacesContext();
> HttpServletRequest req = (HttpServletRequest)
>fc.getExternalContext().getRequest();
>
> JSFThemeContext tc = (JSFThemeContext) JSFThemeContext.getInstance(fc);
> tc.setDefaultLocale(req.getLocale());
>
> return "DBOrderTest";
> }
>
>
>mike.r.phillips wrote:
>
>
>>Can woodstock localization be based on the users current browser language
>>choice(request.getLocale())?
>>
>>After creating a sun/webui/jsf/suntheme/messages/messages_de.properties
>>I can only get the correct localized strings and buttons used by the
>>underlying components to be used if I add
>>a JVM option "-Duser.language=de" to the app server, or if I use
>>Locale.setDefault(choosenLocale) and then
>>re-deploy my app.
>>
>>if I use <f:view locale="<%= request.getLocale() %>"> the bundles I create
>>that are not part of
>>underlying components are localized correctly and change for each user
>>base on browser preference.
>>
>>Is there a way to tell components to reload the localized strings without
>>bouncing app server?
>>
>>
>>
>
>
>