Tiles2 Struts Switch Locale

时间:2011-01-23 09:06:59

标签: localization internationalization struts2 tiles2

我是struts2和tiles2的新手,我有一个应用程序,我使用struts2作为mvc框架,使用tiles2作为视图组件。 在我的应用程序中,我使用2种语言英语和马拉地语各自的语言环境是en_US和mr_IN 我有tiles.xml和tiles_mr_IN.xml 当我从浏览器切换语言环境时,代码工作正常 但我想在英语和马拉地语之间切换,用户应该被重定向到具有相同请求参数的相同操作。 我试过satting request_locale参数,但它没有用。 我可以发现,如果我可以在请求标头中切换区域设置或将区域设置从struts2传递到tiles lisner或类似的东西 请帮忙

1 个答案:

答案 0 :(得分:1)

这个问题应该可以解决几个s2 jsp标签。

此链接显示了您需要的部分内容:http://struts.apache.org/2.0.14/docs/how-do-we-change-locales.html

这就是它显示了如何使用s2 url添加参数,然后使用它来设置区域设置。

如果i18n拦截器中有一个名为“request_locale”的参数将使用该参数而不是用户代理语言首选项。

使示例更适合模板更改

<s:url id="en" action="Welcome">

<s:url includeParams="get">

注意操作名称已被省略,这将默认为当前操作(这是您的模板的理想选择),然后includeParams =“get”将所有参数添加回url,以便它们将被传递到使用锚点时的操作。 includeParams可以是“none”,“get”或“all”(做你期望的事情)。有关s2 url标记的详细信息,请参阅:http://struts.apache.org/2.2.1.1/docs/url.html

进一步注意,s2 a标签与s2 url标签具有大部分相同的功能,利用它会产生:

<s:a includeParams="get">
  <s:param name="request_locale" value="en_US"/>
  English
</s:a>
&nbsp;
<s:a includeParams="get">
  <s:param name="request_locale" value="mr_IN"/>
  Marathi
</s:a>