You can always decorate PersistentLocale and change behaviour of get() by
returning null from it, when the original result is your default locale.

Cezary


On Fri, Sep 6, 2019 at 10:45 AM Rafael Bugajewski <raf...@juicycocktail.com>
wrote:

> Hello,
>
> Tapestry supports putting the current locale into the URL path. I’m
> injecting PersistentLocale and switching between languages as advised in
> the documentation:
>
> if (persistentLocale.get() == null) {
>     persistentLocale.set(new Locale("de"));
> } else if ("en".equalsIgnoreCase(persistentLocale.get().getLanguage())) {
>     persistentLocale.set(new Locale("de"));
> } else {
>     persistentLocale.set(new Locale("en"));
> }
>
> The problem is that the default language should not have a prefixed URL
> path. When the user goes to https://example.com/ the default language is
> rendered and it is the desired behavior. When I switch the URL becomes
> https://example.com/de/ which is also OK. But now when I try to switch
> back to English (to the default language), the URL becomes
> https://example.com/en/ which I don’t want. Trying to set Locale.ROOT as
> the locale for the default language after switching from German doesn’t
> work, because "" (which Locale.ROOT effectively represents) isn’t
> configured in SymbolConstants.SUPPORTED_LOCALES.
>
> The only thing I’ve seen are some older threads where PersistentLocale was
> copied, pasted & adjusted to allow null parameters. Is this workaround the
> only way to go or is there an official, Tapestry way to not have the locale
> in the URL path for the default language?
>
> Best,
> Rafael
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to