This issue should be resolved with a pair of s2 jsp tags.
This link shows part of what you need: http://struts.apache.org/2.0.14/docs/how-do-we-change-locales.html
This shows how to take the s2 url, add a parameter, and then use it to set the locale.
If the i18n interceptor has a parameter called "request_locale", it will use it according to the language preferences of user agents.
To make the example more suitable for changing the template
<s:url id="en" action="Welcome">
to
<s:url includeParams="get">
Please note that the action name was omitted, this will be the default current action (which is perfect for your template). next includeParams = "get" will add all parameters back to the URL so that they are passed in when you use the anchor. In includeParams can be "no", "receive" or "all" (do what you expect). For more information on the url s2 tag see: http://struts.apache.org/2.2.1.1/docs/url.html
Note that the s2 tag tags have much of the same functionality as the s2 url tag that uses this:
<s:a includeParams="get"> <s:param name="request_locale" value="en_US"/> English </s:a> <s:a includeParams="get"> <s:param name="request_locale" value="mr_IN"/> Marathi </s:a>
source share