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:david.kerw...@hse.ie] 
Sent: 09 February 2009 15:57
To: Struts Users Mailing List
Subject: RE: Struts2 + tiles + i18n, getText issue

Hi,
        Just discovered this also happens with
<s:textfield key="surname" label="%{getText('surname')}"></s:textfield>
I don't know how to get around that as I can't put s:text in its place.

Am I just doing something wrong?  If so what should I be doing?

Any help would be great

Thanks
Dave

-----Original Message-----
From: David Kerwick [mailto:david.kerw...@hse.ie] 
Sent: 06 February 2009 14:57
To: user@struts.apache.org
Subject: Struts2 + tiles + i18n, getText issue

Hi,
        I've come across a problem I can't figure out it seems similar to 
http://www.mail-archive.com/user@struts.apache.org/msg76063.html

These two statements give different results when the language is changed
<s:property value="%{getText('test')}"/>
<s:text name="test"/>

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 the i18n interceptor must be working. 
Anyone any idea why getText is ignoring the language?
I came across this when using tabbedPanel and adding i18n to the tab titles.

I'm using Struts struts-2.0.14 and the tiles bundle that comes with it
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> 

Thanks
Dave

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to