我有一个用户直接加载的.jsp页面。使用如下URL的URL请求它:
http://www.example.com/myfile.jsp?country=CA&language=fr
在JSP中,我提取URL GET参数并尝试使用它们设置语言环境,如下所示:
<% String myLanguage = request.getParameter("language"); String myCountry = request.getParameter("country"); Locale myLocale = new Locale(myLanguage, myCountry); pageContext.setAttribute("myLocale", myLocale, PageContext.PAGE_SCOPE); %> <fmt:setLocale value="${myLocale}" scope="page" />
然后,JSP中有几个位置显示使用Struts中的<bean:message bundle="ts" key="..." />
从本地化资源包中提取的消息。
在第一次请求此页面时(在更改URL中的语言之后),它将以美国英语(默认语言环境)返回,然后后续刷新将返回正确本地化的内容。
答案 0 :(得分:2)
我不做Struts,但Google了解到您需要将Locale
设置为以Globals.LOCALE_KEY
为关键字的会话属性。
session.setAttribute(Globals.LOCALE_KEY, myLocale);
您实际上不需要JSTL fmt:setLocale
。
那就是说,我会在一个Filter
中而不是在每个JSP中执行此操作。