Grails 基于浏览器的自动语言检测

Grails 基于浏览器的自动语言检测,grails,internationalization,Grails,Internationalization,如何检测浏览器的语言并根据该值自动显示正确本地化的grails网站版本。 我将其放入索引操作 Locale locale = new Locale(params.lang) cookieLocaleResolver.setLocale(request, response, (Locale) session.getAttribute('locale')) { render controller: "home", action: "index" return

如何检测浏览器的语言并根据该值自动显示正确本地化的grails网站版本。

我将其放入索引操作

Locale locale = new Locale(params.lang)
cookieLocaleResolver.setLocale(request, response, (Locale)
session.getAttribute('locale'))
{  
    render controller: "home", action: "index"
    return             
}
我得到了一个例外--


首先,您应该将其放入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
请注意,以上不是一个完整的实现,但它几乎是。饼干的材料和有效的语言,你应该能够弄清楚他们做什么

我希望这有帮助

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