> <snip/>
>
> >>>Request object wraps HttpServletRequest and returns the locale that the
user
> >>>has selected in his browser, but that locale can be different from the
one
> >>>that the system supports. I don't know if any browser can set a new
value to
> >>>the http header that indicates the user locale. IMO, it's better to
leave
> >>>Request object as it is now and have a helper class that will perform
> >>>custom language selection.
> >>>
> >>That's really because environment.Request is an interface that what I
> >>propose is possible : determination of the locale can be interposed in
> >>the wrapper before actually calling HttpServletRequest.getLocale(). This
> >>has nothing to do with tweaking the browser's header or
> >>HttpServletRequest which BTW is not possible
> >>
> >
> >But what if somebody will need the original user locale?
> >
> I knew this question would come ;)
>
> So what about Request.getBrowserLocale() ? This way, request.getLocale()
> give access to the locale as defined by the application (using
> LocaleAction or other means) and getBrowserLocale() gives access to the
> raw locale sent by the browser.
>
> Note that if no locale was set by the application, getLocale() should
> fall back calling getRawLocale().

I don't like the idea of overriding the expected behavior of
Request.getLocale(). Most of the people expect that it will return that same
value as the HttpServletRequest. Maybe do the opposite thing: add
Request.getAppLocale() and setAppLocale() or better getUserLocale() and
setUserLocale()?

Are there any other opinions on this?

>
> >>>Maybe it'll be better to pass selected locale externaly it to the
> >>>transformer in the sitemap? This way we can use any locale
> >>>selection/determination mechanism and have transformer that don't
depend
> >>>on an action.
> >>>
> >>>
> >>>  <map:match pattern="*.xml">
> >>>       <map:action name="locale-select">
> >>>           <map:generate src="{1}.xml"/>
> >>>           <map:transform type="i18n">
> >>>               <map:parameter name="locale" value="{cocoon-locale}" />
> >>>           </map:transform>
> >>>           <map:transform src="simple.xsl"/>
> >>>           <map:serialize/>
> >>>       </map:action>
> >>>  </map:match>
> >>>
> >>>What about this?
> >>>
> >>I goes in the direction of what I want to avoid : multiple sources to
> >>get the locale ;)
> >>
> >
> >You can setup a matcher for all i18n requests and have single source -
> >LocaleAction.
> >
> What do you mean by "i18n requests" ? Requests that use the i18n
> transformer ? Then LocaleAction will be a top-level element in my
> sitemaps :)

Good idea! I've always thought on why it's not possible to have global
actions or at least pipeline actions :)

>
> >>However, pluggable mechanism is possible with my second proposal :
> >>adding Request.setLocale(). This method can be called by whatever
> >>mechanism you want.
> >>
> >
> >So, you'll need an action to call it - we are back to the LocaleAction ;)
> >
> Sure. But if LocaleAction changes the locale returned by
> request.getLocale(), this value is then globally available, thus
> avoiding the need for <map:parameter name="locale" .../>

Yes, that's true

>
> >>>>>Are there any other wishes/suggestions/comments regarding i18n?
> >>>>>
> >>>>Yes : use the "cocoon-" prefix for the "locale" request parameters, as
> >>>>for "cocoon-view" and "cocoon-action", to avoid potential naming
conflicts,
> >>>>
> >>>'locale' parameters are configured in sitemap, so you can use any name
> >>>for them (e.g.: 'locale-attribute" config param)
> >>>
> >>Ah, sorry, didn't notice that. But wouldn't it be better to default to
> >>"cocoon-locale" ?
> >>
> >
> >Have nothing against it. +0
> >
> I thinks there's a misunderstanding here : I was talking about the
> _request_ parameter and not the _sitemap_ parameter returned by
> LocaleAction. From what I can see, the _request_ parameter name is
> hardcoded to "locale" in getLocale().

I understood you correctly, but the implementation were different from what
I was expecting.

>
> Also, I don't see a real need to configure the name of sitemap
> parameters returned by LocaleAction since there is no possibility of
> naming conflict, since the sitemap component is unambiguously defined by
> the number of '../' in attribute values.

Absolutely agree. That was my proposal to have i18n attribute name
configuration parameter, but the implementation were made not by me and it
is not what I was thinking about.

Konstantin

>
> >So, maybe you'd start from LocaleAction (or Request interface) until I'll
> >send my latest version of i18n transformer?
> >
> Please go on, as I don't have much time for this now.
>
> Sylvain
>
> --
> Sylvain Wallez
> Anyware Technologies - http://www.anyware-tech.com
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, email: [EMAIL PROTECTED]
>

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

Reply via email to