Прежде всего, вы должны поместить это в фильтр в каталоге grails-app / conf. Создайте фильтр, если у вас его еще нет.
MyFilters.groovy
class MyFilters {
def filters = {
setLocale(controller:'*', action:'*') {
before = {
// Your logic here
}
}
}
}
Ваша логика здесь может выглядеть по-разному, но вот попытка:
String langToSet = 'en';
if ( params.lang && params.lang in validLanguages )
langToSet = params.lang;
else if ( session.lang ) {
langToSet = session.lang;
}
else if ( ... ) // Cookie lang is set ( User might have accessed the site before and you have stored their preferred lang )
// Get cookie lang
Locale locale = new Locale( langToUse)
org.springframework.web.servlet.support.RequestContextUtils.getLocaleResolver(request).setLocale(request, response, locale);
// Set the cookie lang
...
// We set the session lang
session.lang = langToSet
Обратите внимание, что приведенное выше не является полной реализацией, но это почти cookie cookie и validLanguages вы сможете понять, что они делают.
Надеюсь, это поможет!