在Grails中,如何在用户更改语言时保存语言环境?

时间:2014-01-16 01:57:26

标签: grails localization

我有一个带有语言下拉选择器的Grails应用程序,如下所示:

<li><a href="?lang=tr_TR">Turkish</a></li>
<li><a href="?lang=en_US">English</a></li>
<li><a href="?lang=fr_FR">French</a></li>

当用户点击该链接时,它会将lang参数附加到查询字符串,并且语言会正确更改。但是,现在我必须将语言更改保存到数据库,以便我们知道用户最后选择的语言。有谁知道我怎么能做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用params["lang"]

在控制器中检索参数

然后为了保存未来访问的价值,我可以想到不同的方式:

  1. 如果您已经在数据库中有一个包含记录的User对象,则只需向其添加一个lang变量。只要您的用户记录保存在数据库中,就会永久记住这一点。

    user.lang = params["lang"]

    user.save()

  2. 使用Session范围存储lang变量。

    session.lang = params["lang"]

  3. 使用Cookie将值保存在用户的浏览器历史记录中。 http://grails.org/plugin/cookie

    cookieService.setCookie('lang', params["lang"]) // to set  cookieService.get('lang') // to retrieve

答案 1 :(得分:0)

如果用户可以更改您应用的任何页面中的语言,我建议您使用拦截器http://grails.org/doc/latest/ref/Controllers/beforeInterceptor.html。使用此拦截器,您可以获得如果已将参数'lang'传递给控制器​​并正确设置登录用户的语言。