Ulrich, Many thanks for your very precise answer ! Indeed threadLocale.getLocale() is the way to go.
José

Ulrich Stärk a écrit :

I'm not 100% firm in this area but I believe that the user's locale gets stored in the ThreadLocale service. This service is responsible for storing the current thread's locale, i.e. the locale for which pages, messages etc. are being generated. The locale in ThreadLocale gets set by a combination of various other services.

One of them is the PersistentLocale service. If you call persistentLocale.set(locale) a cookie is sent to the browser storing the desired locale. If you call persistentLocale.get() that value is read and returned. If no cookie has been set, this will be null. You can check that with persistentLocale.isSet().

persistentLocale.set() also overwrites the locale in the ThreadLocale service. If the desired locale is not in supported-locales, Tapestry chooses the nearest matching locale. Thus, querying the ThreadLocale service will give you the locale that Tapestry has chosen to generate pages, messages etc. in, taking into account PersistentLocale's value as well as the Request's locale.

So there are 3 ways to get the locale:

- request.getLocale() will give you the locale, that the browser sent
- persistentLocale.get() will give you the locale stored in a cookie in the user's browser or null, if no cookie is set - threadLocale.getLocale() will give you the locale choosen by Tapestry, taking into account the Request's locale, PersistentLocale's locale (will be chosen over the Request's locale) and supported-locales.

HTH.

Cheers,

Uli


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

Reply via email to