As you can see by yourself, this is not a Tiles issue. Keep asking in the Struts Users mailing list.
Antonio 2009/2/11 David Kerwick <[email protected]>: > Hi all, > Well I think I figured out what's happening but not why. > I was using <s:debug/> and noticed > session {WW_TRANS_I18N_LOCALE=ga} > locale en_US > > With more than one tile in use the locale doesn't get changed I assume s:text > reads off com.opensymphony.xwork2.ActionContext.locale > and getText takes the default locale and that's why they are different. > > I can force the issue in my action > if(session.containsKey("WW_TRANS_I18N_LOCALE")){ > Locale.setDefault((Locale) > session.get("WW_TRANS_I18N_LOCALE")); > } > Which will work but isn't the nicest. > > I assume this is caused by something in my configuration or someone else > would have come across it by now. > Anyone any idea where I'm going wrong? > Or any idea of a better way to fix the problem? > > Thanks > Dave > > -----Original Message----- > From: David Kerwick [mailto:[email protected]] > Sent: 11 February 2009 09:53 > To: [email protected] > Subject: Struts2 + Tiles + i18n, getText issue > > Hi, > I tried asking this of the struts list but got no response I was wondering of > anyone here could help. > > The problem I have is these two statements give different results when the > language is changed <s:property value="%{getText('test')}"/> <s:text > name="test"/> when in a tile. > > With s:text giving the correct language text but getText always gives the > default language text. > > The tiles definition I have is > > <definition name="test.basic" template="/WEB-INF/tiles/testTemplate.jsp"> > <put-attribute name="body" value="/test.jsp"/> > <put-attribute name="navbar" value="/WEB-INF/pages/navBar.jsp"/> > </definition> > > They both work correctly if there's only one tile i.e. > > <definition name="test.basic" template="/WEB-INF/tiles/testTemplate.jsp"> > <put-attribute name="body" value="/test.jsp"/> > </definition> > > So it seems to be something to do with having multiple tiles but since s:text > works I would have thought the i18n interceptor must be working. > Anyone any idea why getText is ignoring the language? > This happened for me when trying to localise labels i.e. > > <s:textfield key="surname" label="%{getText('surname')}"></s:textfield> > > I can get languages to work if I pass the body tile through an action i.e. > <put-attribute name="body" value="/test.action"/> > But that creates a whole set of other problems for me with validation. > > I'm using Struts struts-2.0.14 and the tiles bundle that comes with it, I > have also tried tile-2.1.2. > I change language using the code from HelloWorld.action > > <h3>Languages</h3> > <ul> > <li> > <s:url id="url" action="test"> > <s:param name="request_locale">en</s:param> > </s:url> > <s:a href="%{url}">English</s:a> > </li> > <li> > <s:url id="url" action="test"> > <s:param name="request_locale">ga</s:param> > </s:url> > <s:a href="%{url}">Irish</s:a> > </li> > </ul> > > Am I just doing something wrong? If so what should I be doing? > > Any help would be great > Thanks > Dave >
