part of urlmappings looks this:
"/$lang"(controller: "main", action: "front") { constraints { lang inlist: ['hr', 'sl', 'si'] } } because want set lang 'sl' if 'si', created following filter:
def filters = { all(controller: '*', action: '*') { before = { if(params.lang == 'si') { params.lang = 'sl' } } } } problem: params.lang inside controller gets wanted value ('sl'), in views, params.lang gets resolved original value ('si'). suggest solve problem?
thank you!
try use redirects. did way:
def filters = { pages(controller: 'pages', action: 'home|services|projects|project_details|contact_us|career|about_us|downloadcasestudy') { before = { if (params.lang) { if (!(params.lang in grailsapplication.config.i18nfields.locales)) { session."$sessionlocaleresolver.locale_session_attribute_name" = null params.remove('lang') response.senderror(404) return } if (params.lang == grailsapplication.config.defaultlocale) { rcu.getlocaleresolver(request).setlocale(request, response, new locale(params.lang)) params.remove('lang') chain(controller: "pages", action: params.action, model:chainmodel?:[:],params: params) return false } } else { string langcode = rcu.getlocale(request).getlanguage() if (!(langcode in grailsapplication.config.i18nfields.locales)) { params.lang = grailsapplication.config.defaultlocale return } else if (langcode != grailsapplication.config.defaultlocale) { params.lang = langcode chain(controller: params.controller, action: params.action, model:chainmodel?:[:], params: params) } return true } } after = { map model -> } afterview = { exception e -> } } a little explanation: build urls /ru/about_us.
1.if lang not in list - 404.
2.if lang = grailsapplication.config.defaultlocale show instead of /en/about_us /about_us.
3. if no lang param provided - resolve request.
Comments
Post a Comment