Ah, I also tried to llok at MountedMapper that has a protected
newPageParameters() trying to add there a new parameter with locale
but that didn't worked, I couldn't see any moment when the method is
actually called while the application is running

On Tue, Oct 11, 2011 at 11:34 AM, Daniele Dellafiore
<dani...@dellafiore.net> wrote:
> Yes the solution could work but is no more applicable to Wicket 1.5
> since it now uses Mapper instead of old fashioned Url Coding
> Strategies.
>
> I've tried to hack around but I've found no point where to add a
> default parameter to all the web pages that's the Locale.
> Also, the BookmarkableLink, for example, should address this issue. If
> al pages are mounted like
>
> "${language}/products/${category}"
>
> I need the link to take care of this. The whole purpose is for SEO
> reason, we need google to crawl correctly all the website in all of
> the languages. So I've to add language as parameter in all links.
> Of course I can just extend and have my I18NBookmarcableLink. I am
> wondering about a nicer solution. Any ideas?
>
> On Mon, Oct 26, 2009 at 9:08 PM, Ilja Pavkovic
> <ilja.pavko...@binaere-bauten.de> wrote:
>> Hi,
>>
>> a better solution (in my eyes.. :)) is something like:
>>
>> import java.util.Locale;
>>
>> import org.apache.wicket.IRequestTarget;
>> import org.apache.wicket.Page;
>> import org.apache.wicket.Session;
>> import
>> org.apache.wicket.request.target.coding.BookmarkablePageRequestTargetUrlCodingStrategy;
>>
>> public class I18NBookmarkablePageRequestTargetUrlCodingStrategy extends
>> BookmarkablePageRequestTargetUrlCodingStrategy {
>>
>>        private Locale locale;
>>
>>        public <C extends Page>
>> I18NBookmarkablePageRequestTargetUrlCodingStrategy(Locale locale, String
>> mountPath,
>>                        Class<C> bookmarkablePageClass) {
>>                this(locale, mountPath, bookmarkablePageClass, null);
>>        }
>>
>>        private <C extends Page>
>> I18NBookmarkablePageRequestTargetUrlCodingStrategy(Locale locale, String
>> mountPath,
>>                        Class<C> bookmarkablePageClass, String pageMapName) {
>>                super(mountPath, bookmarkablePageClass, pageMapName);
>>                this.locale = locale;
>>        }
>>
>>        //public IRequestTarget decode(RequestParameters requestParameters)
>>        public boolean matches(IRequestTarget requestTarget) {
>>                boolean matches = super.matches(requestTarget);
>>                if(matches) {
>>                        matches = locale == null ||
>>                                                
>> locale.equals(Session.get().getLocale()) ||
>> // also match en and en_US
>>                                                
>> locale.getLanguage().equals(Session.get().getLocale().getLanguage());
>>                }
>>                return matches;
>>        }
>> }
>>
>> you can use it with:
>>
>>                mount(new
>> I18NBookmarkablePageRequestTargetUrlCodingStrategy(Locale.GERMAN,"startseite",getHomePage()));
>>                mount(new
>> I18NBookmarkablePageRequestTargetUrlCodingStrategy(Locale.ENGLISH,"homepage",getHomePage()));
>>
>>
>> Be warned: this is only a hack that may break at your site :))
>>
>> Am Montag, 26. Oktober 2009 15:25:49 schrieb Bernhard Grünewaldt:
>>> Hello,
>>>
>>> After thinking a bit I came up with a solution (which many of you might
>>> call "dirty workaround"). But since no one else came up with a solution
>>> I will stick to it until something better will be provided.
>>>
>>> The solution can be found here:
>>>
>>> http://blog.gruenewaldt.net/en/programming/java/apache-wicket-1_4-mounting-
>>> urls-for-a-multilanguage-setup-i18n-seo/
>>>
>>> Perhaps someone might find that useful.
>>>
>>> Bernhard
>>>
>>> Bernhard Grünewaldt schrieb:
>>> > Hi folks,
>>> >
>>> > Since my app will be english and german aswell, that is something I need
>>> > too. I tried to mount and unmount my pages
>>> > when the locale changes from german to english or vice versa.
>>> > I tried using ResourceModel Strings for the urls, but it's not working
>>> > the way I want it to be. And it would be a massive amount of code for
>>> > something that seems to be so simple.
>>> >
>>> > The problem is, that I want both urls to be accessed via the url like in
>>> > the example:
>>> >   http://xxx/impressum
>>> > and
>>> >   http://xxx/imprint
>>> > should be accessible not depending on a specific locale setting.
>>> > (Perhaps the locale should change to english or german depending on the
>>> > url when accessed via a browser bookmark with no session)
>>> >
>>> > The problem is, that you can mount a class multiple times, but for
>>> > creating the BookmarkablePageLinks the first one mounted will be used
>>> > for the link. (tested with wicket 1.4.3).
>>> >
>>> > Wouldn't it be cool to have such a mechanism which uses the Locale
>>> > setting to generate links and mount pages.
>>> >
>>> > For example (Just pseudo code):
>>> >
>>> > .mount(
>>> >   new HybridUrlCodingStrategy(
>>> >     "impressum", ImprintPage.class, Locale.GERMAN)
>>> > );
>>> > .mount(
>>> >   new HybridUrlCodingStrategy(
>>> >     "imprint", ImprintPage.class, Locale.ENGLISH)
>>> > );
>>> >
>>> > And when you then generate a url you could use:
>>> >
>>> > add(new BookmarkablePageLink<Void>(
>>> >    "bookmarked",
>>> >    ImprintPage.class,
>>> >    getSession().getLocale())
>>> > );
>>> >
>>> > That way both urls would be accessible if bookmarked.
>>> > And the user gets the url generated in his locale while browsing through
>>> > the app.
>>> >
>>> > Is there a cool(=easy) way to do that or will it lead to
>>> > a massive code section that mounts and unmounts pages on locale change?
>>> >
>>> > Bernhard
>>> >
>>> > Ilja Pavkovic schrieb:
>>> >> Hi,
>>> >>
>>> >> as we need some SEO optimization I want to provide the following
>>> >> bookmarkable pages:
>>> >>
>>> >> http://xxx/impressum
>>> >> http://xxx/imprint
>>> >>
>>> >> the native approach would be somethink like:
>>> >>
>>> >> mountBookmarkablePage("imprint", ImprintPage.class);
>>> >>
>>> >> mountBookmarkablePage("impressum", ImprintPage.class);
>>> >>
>>> >> This looks ugly but works.
>>> >> Now I don't know how to create a bookmarkable links having an url in
>>> >> the expected language.
>>> >>
>>> >> if( getLocale().equals(Locale.GERMAN)) {
>>> >>   //create http://xxx/impressum
>>> >> } else {
>>> >>   // http://xxx/imprint
>>> >> }
>>> >>
>>> >> Obviously the following code does not help:
>>> >>   add(new BookmarkablePageLink("link", ImprintPage.class));
>>> >>
>>> >> Does anyone have a good idea?
>>> >>
>>> >> Best regards,
>>> >>     Ilja Pavkovic
>>> >
>>> > ---------------------------------------------------------------------
>>> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>> > For additional commands, e-mail: users-h...@wicket.apache.org
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>
>>
>> --
>> binaere bauten gmbh · tempelhofer ufer 1a · 10961 berlin
>>
>>   +49 · 171 · 9342 465
>>
>> Handelsregister: HRB 115854 - Amtsgericht Charlottenburg
>> Geschäftsführer: Dipl.-Inform. Ilja Pavkovic, Dipl.-Inform. Jost Becker
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>>
>
>
>
> --
> Daniele Dellafiore
> http://danieledellafiore.net
>



-- 
Daniele Dellafiore
http://danieledellafiore.net

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to