Grails:如何在位于控制器/域/服务之外的 GSP 页面中获取区域设置?
Grails: How to get locale in a GSP page that sits outsides of controller / domain / service?
我有一个带有语言选择的国际化应用程序,它基于 Grails 和 kickstarter 插件。根据其 UrlMappings 中的配置,有些页面没有控制器。在这些上,无论用户实际选择了什么,都只会应用默认区域设置。此外,在他们身上改变语言是行不通的。 g:message 使用默认语言环境标记输出;我试过了
<g:set var="locale"
value="${session.'org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE' ?: org.springframework.web.servlet.support.RequestContextUtils.getLocale(request)}"/>
(忘了我是在哪里发现的)..但之后什么都没有改变。
显然这是 a bug in grails versions prior to 2.4.4
我通过检索相关 gsp 顶部的语言环境来解决这个问题,如下所示:
<g:set var="lang" value="${session.'org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE'}"/>
(来自 this blog post),然后将语言环境添加到我希望在页面中显示已翻译的消息,使用 @ 的解决方案
SergeiShushkevich 像这样:
<g:message code="text.label" locale="${lang}"/>
${message([code:'text.label', locale:lang])}
我有一个带有语言选择的国际化应用程序,它基于 Grails 和 kickstarter 插件。根据其 UrlMappings 中的配置,有些页面没有控制器。在这些上,无论用户实际选择了什么,都只会应用默认区域设置。此外,在他们身上改变语言是行不通的。 g:message 使用默认语言环境标记输出;我试过了
<g:set var="locale"
value="${session.'org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE' ?: org.springframework.web.servlet.support.RequestContextUtils.getLocale(request)}"/>
(忘了我是在哪里发现的)..但之后什么都没有改变。
显然这是 a bug in grails versions prior to 2.4.4
我通过检索相关 gsp 顶部的语言环境来解决这个问题,如下所示:
<g:set var="lang" value="${session.'org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE'}"/>
(来自 this blog post),然后将语言环境添加到我希望在页面中显示已翻译的消息,使用 @ 的解决方案 SergeiShushkevich 像这样:
<g:message code="text.label" locale="${lang}"/>
${message([code:'text.label', locale:lang])}