grails - 在特定语言环境中呈现单个GSP

标签 grails internationalization locale gsp

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

这两种解决方案都有效

使用参数

    /book/list?lang=es

在 Controller 中使用代码
    def newLocale = new Locale(lang)
    RCU.getLocaleResolver(request).setLocale(request, response, newLocale)
    render(view: "mail", model: [invoiceInstance: invoiceInstance])

不幸的是,这两种解决方案都将永久更改 session 对象,并随后影响所有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渲染呢?

最佳答案

我认为,如果在渲染器位置使用新的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

关于grails - 在特定语言环境中呈现单个GSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12254888/

相关文章:

grails - 如何访问src/java文件中的config.groovy值?

spring - 如何更新Spring Security Management Console?

spring-mvc - Spring MVC/Freemarker : using a message from a bundle in a Freemarker expression

javascript - 如何在 grails 2.2.2 中调用 javascript 函数

php - JMSTranslationBundle 未提取 'placeholder' 元素

ios InfoPlist.strings 翻译不起作用,但所有其他 i18n 文件都可以正常工作

ruby-on-rails-3 - 始终以默认语言设计超时消息

java - 如何使用 Strings.xml 更改文本值 - AndroidX

android - Android 中带有 ar-ae 和 ar-sa 语言环境的阿拉伯数字

json - 用Grails 2.4解析JSON空字符串值