2011-11-24 124 views
1

如何檢測瀏覽器的語言,並根據該值自動顯示正確的本地化版本的Grails網站。
瀏覽器自動檢測語言

我把這個給Index操作

Locale locale = new Locale(params.lang) 
cookieLocaleResolver.setLocale(request, response, (Locale) 
session.getAttribute('locale')) 
{ 
    render controller: "home", action: "index" 
    return    
} 

而且我得到了exception--

Error 500: Executing action [index] of controller [socialworking.HomeController] caused exception: null 
Servlet: grails 
URI: /socialworking/grails/home.dispatch 
Exception Message: 
Caused by: 
Class: Unknown 

回答

1

首先,你應該把在過濾器中的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 

注意,上面的是不是一個完整的實現,但它是幾乎。該餅乾的東西有效的語言你應該能夠弄清楚他們做什麼。

我希望有幫助!