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