在Grails应用程序中检索活动区域设置

我知道我可以使用“lang”参数自动更改文档中描述的当前语言环境,但是如何跟踪这些更改,例如更新存储在当前用户域对象中的语言?

request.locale不起作用,因为它不反映通过“ ?lang=xx ”完成的更改

在控制器中,您可以使用RequestContextUtils获取区域设置。

 import org.springframework.web.servlet.support.RequestContextUtils as RCU 

然后解决请求的区域设置:

 RCU.getLocale(request) 

Grails在内部使用Spring。 您可以从Spring的RequestContextUtils获取当前的语言环境: http ://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/servlet/support/RequestContextUtils.html#getLocale(javax.servlet) 。 http.HttpServletRequest)

 import org.springframework.web.servlet.support.RequestContextUtils def locale = RequestContextUtils.getLocale(request) 

查看标记源以获取更多信息:

http://grails.org/doc/latest/ref/Tags/message.html

您还可以使用不需要请求的LocaleContextHolder作为参数

 import org.springframework.context.i18n.LocaleContextHolder; LocaleContextHolder.getLocale(); 

如果显示RequestContextUtils.getLocale(request) properties ,您将找到以下内容:

 ISO3Country= ISO3Language=ara displayCountry= class=class java.util.Locale default=fr_FR language=ar variant= ISOLanguages=[Ljava.lang.String;@4269f8e3 availableLocales=[Ljava.util.Locale;@3b532125 displayName=arabe ISOCountries=[Ljava.lang.String;@4ea52290 displayVariant= displayLanguage=arabe country=