在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)
查看
您还可以使用不需要请求的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=