【问题标题】:render a SINGLE GSP in a specific locale在特定语言环境中呈现 SINGLE GSP
【发布时间】:2023-03-23 07:13:01
【问题描述】:

我正在尝试在特定语言环境中呈现 GSP。

这两种解决方案都有效

使用参数

    /book/list?lang=es

在控制器中使用代码

    def newLocale = new Locale(lang)
    RCU.getLocaleResolver(request).setLocale(request, response, newLocale)
    render(view: "mail", model: [invoiceInstance: invoiceInstance])

不幸的是,这两种解决方案都会永久更改会话对象,并在之后影响所有 GSP。

如果我在 Render 语句之后尝试更改 LocaleResolver,它不起作用。

    // Switch to OWNER language for print preview
    def newLocale = new Locale(lang)
    RCU.getLocaleResolver(request).setLocale(request, response, newLocale)

    render(view: "mail", model: [invoiceInstance: invoiceInstance])

    // switch back to user language
    def newLocale2 = new Locale(user.language)
    RCU.getLocaleResolver(request).setLocale(request, response, newLocale2) 

那么如何强制在特定语言环境中进行 SINGLE 渲染?

【问题讨论】:

  • 您是否尝试更改语言环境以在 中使用?
  • 没有。我正在尝试在控制器中呈现完整的 GSP。

标签: grails internationalization locale gsp


【解决方案1】:

如果您在渲染器的位置使用新的Page Rendering API,我认为您的第二次尝试可以工作。

    // Switch to OWNER language for print preview
    def newLocale = new Locale(lang)
    RCU.getLocaleResolver(request).setLocale(request, response, newLocale)

    def contents = groovyPageRenderer.render(view:"/controller/mail", model: [invoiceInstance: invoiceInstance])

    // switch back to user language
    def newLocale2 = new Locale(user.language)
    RCU.getLocaleResolver(request).setLocale(request, response, newLocale2)

    render contents

【讨论】:

  • pageRenderer 似乎没有响应我认为基于会话的 setLocale。也许如果我能找到如何更改 AppContext 的语言环境?
  • @StéphaneRainville 如果您在 gsp 中打印 RequestContextUtils.getLocale(request),结果是什么?
  • 如果我尝试 print value="${session.'org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE' 我收到一个错误,因为 pageRenderer value="$ 中不支持会话{org.springframework.web.servlet.support.RequestContextUtils.getLocale(request)}" 总是得到 en_CA 这是我认为的浏览器设置
  • 嗯,我明白了,奇怪...我会把问题发布到 grails 论坛...我也对它感兴趣...
【解决方案2】:

经过多次搜索,我不得不将语言环境对象传递给 GSP 中的每个标签。

对于 Grails 来说并不优雅,但它可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多