Hi,

After searching and reading the tapestry source I finally found a working solution (the Tapestry 4 way) of setting the default locale.

The behavior I want is that if no locale cookie is set, the default locale specified in a meta key in my .application file is used. I want this behavior since the target audience is Dutch, and I don't want Dutch users using an English browser to get the English site by default. However I do want to allow people to be able to change the language to English on request.

The trick was to clone the org.apache.tapestry.services.impl.RequestLocaleManager class and fix it so it would not look at the browser supplied locale at all. Unfortunately I was not able to override this class since it users private properties for which there are no setters.

After cloning and adjusting this class I overrode the tapestry.request.RequestLocaleManager service point with my own implementation as described by http://jakarta.apache.org/hivemind/override.html.

Greetings,
Sebastiaan

Mul wrote:
After you set the locale, ensure that cycle.cleanUpRequest (I dont quite
remember the method name), is called and then re-activate the page you want
to get the locale refreshed.


On 2/12/06, Sebastiaan van Erk <[EMAIL PROTECTED]> wrote:
Hi,

After some more reading I found out that Tapestry already saves the user
locale in a cookie, so that's good and it only comes down to setting the
default locale. In the Wiki I found the following page:

http://wiki.apache.org/jakarta-tapestry/DefaultLocale

which says to override the base engine to do:

public final void setLocale(Locale locale)
   {
      if (getLocale() == null)
         super.setLocale(new Locale(defaultLanguage, defaultCountry));
      else
         super.setLocale(locale);
   }

First of all this doesn't seem like "the Tapestry 4" way of doing
things, but secondly, I tried this and it did not work. I display the
engine locale on my pages and it clearly shows that it *is* the default
locale, but the pages are still displayed in the request's locale (which
in this case happened to be a different but accepted locale).

What is the correct way to set the default locale? Should I register my
own RequestLocaleManager on the RequestLocaleManager service point?

Thanks in advance,
Sebastiaan

Sebastiaan van Erk wrote:
Hi,

How can you set the locale of a page on the *first* page load of the
entire application. I store the locale in a cookie, and when the user
comes to the login page I want it to display in their favorite locale.

I searched the list and learned that you can change the locale in a
listener by:

    cycle.cleanup();
    throw new PageRedirectException(this);

However, this does NOT work in the pageBeginRender method... Maybe it's
already too late to try to change the locale there, but I don't know
where to change it otherwise. Does anybody know how to do it before the
first page of the application is displayed?

Thanks in advance!

Greetings,
Sebastiaan

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to