[
https://issues.apache.org/jira/browse/TAPESTRY-1997?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12581081#action_12581081
]
Geoff Callender commented on TAPESTRY-1997:
-------------------------------------------
It appears there is no problem as long as you use the following guidelines:
1. Use lower-case locale names for supported-locales, eg. in AppModule:
public static void
contributeApplicationDefaults(MappedConfiguration<String, String>
configuration) {
configuration.add("tapestry.supported-locales",
"en_gb,en_us,fr");
}
2. In the page class, get the current locale like this:
@Inject
private Locale _locale;
instead of like this:
@Inject
private PersistentLocale _persistentLocaleService;
Locale locale = _persistentLocaleService.get();
When guideline 1 is ignored, then these 4 statements all seem to select the
first English supported locale:
_persistentLocaleService.set(new Locale("en_GB");
_persistentLocaleService.set(new Locale("en_gb");
_persistentLocaleService.set(new Locale("en_US");
_persistentLocaleService.set(new Locale("en_us");
When it IS followed, then all is well, although this makes me uneasy because
I'm not sure that "en_gb" and "en_us" are actually valid locales.
Guideline 2 returns a _locale that is correctly mixed case, eg. "en_GB" or
"en_US", whereas _persistentLocaleService.get() does not - it returns a
lower-cased locale, eg. "en_gb" or "en_us" which is useless for formatting
things correctly (see original comments in this issue).
These guidelines are OK as a work-around, but my vote is that the handling of
supported-locales should be changed. Requiring lower-case is confusing and, I
suspect, not even correct.
> PersistentLocale is lower-casing locales
> ----------------------------------------
>
> Key: TAPESTRY-1997
> URL: https://issues.apache.org/jira/browse/TAPESTRY-1997
> Project: Tapestry
> Issue Type: Bug
> Components: tapestry-core
> Affects Versions: 5.0.6
> Reporter: Geoff Callender
>
> An issue affecting localization: PersistentLocale is converting locales from
> mixed case to all lower case, which is useless for formatting. For example,
> if page 1 sets the locale like this:
> @Inject
> private PersistentLocale _persistentLocaleService;
> Locale locale = Locale.UK;
> _persistentLocaleService.set(locale);
> System.out.println("locale is " + locale + " - " +
> locale.getDisplayName());
>
> then this is what prints:
> locale is en_GB - English (United Kingdom)
> But when I'm in page 2 I get the locale and find it has mutated...
> Locale locale = _persistentLocaleService.get();
> System.out.println("locale is " + locale + " - " +
> locale.getDisplayName());
> ...this is what prints:
> locale is en_gb - en_gb
> This mutated locale in page 2 is useless for formatting. Code like the
> following produces default-styling instead of the styling for en_GB:
> _myDateFormat = DateFormat.getDateInstance(DateFormat.LONG, locale);
> System.out.println(_myDateFormat.format(new Date()));
> It seems this has also adversely affected how supported-locales are declared
> (maybe in previous releases only). See
> http://thread.gmane.org/gmane.comp.java.tapestry.user/56526/focus=56527
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]