There is a major refactoring planned for xwork's I18n, this should
probably be part of it. Rene you watching this?

musachy

On Fri, Aug 14, 2009 at 2:16 PM, Julien HENRY<henr...@yahoo.fr> wrote:
> After digging into Struts2 code, here is what I discovered: this bug is 
> simply caused by the normal behavior of getBundle 
> (http://java.sun.com/j2se/1.4.2/docs/api/java/util/ResourceBundle.html#getBundle(java.lang.String,%20java.util.Locale,%20java.lang.ClassLoader))
>
> Here is the explanation
>
> In my Struts2 application I have the following language files:
>
>
> default_de.properties
> default_fr.properties
> default.properties (contains EN)
>
> JVM Defaut Locale: fr_FR
>
>
> Scenario 1:
> struts.locale not set so fr_FR is the default
> When hitting the first action, default_fr.properties is used
> OK
>
> Scenario2:
> Now I want to switch to English so I append ?request_locale=en to the URL
> According to getBundle algorithm:
>    1) default_en.properties is looked but not found
>    2) default_fr.properties is found and used
> KO
>
> Scenario 3:
> struts.locale is set to en_US
> When hitting the first action, we are in the same case as scenario 2 because 
> JVM default is still fr_FR
>
> The issue lay in LocalizedTextUtil.findResourceBundle(String
> bundleName, Locale locale) because here we only know that the user
> wants the given locale but we have no idea of what is the fallback
> locale.
>
> Proposed solutions:
>
> 1) default.properties should always match JVM language. Because an 
> application may be developped for several country it means forcing default 
> JVM with -Duser.language=XX. But this is not a good solution because the same 
> JVM may host several applications with possibly different default Locale.
>
> 2) Force JVM default locale on Struts startup to be equal to struts.locale. 
> The main concern is I'm not sure it will works fine with multi-threading and 
> it will have many side effects (like changing language for stacktraces in the 
> log)
>
> 3) Clean solution : have a clear separation between requested locale (with 
> potentialy a default struts.default.request.locale) and default local (mean 
> the locale that is contained in the resource bundle without extension). Then 
> use the Java 1.6 feature (I know, I know, don't shout at me) 
> ResourceBundle.Control that allow to change the fallback locale.
>
> Interesting read:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5086301
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4303146
>
> It seems that JSF implements its own lookup algorithm. IMHO this is the only 
> solution if you don't want to use the JDK 1.6 feature ResourceBundle.Control.
>
>
> Regards,
>
> Julien
>
>
>
>
> ________________________________
> De : "mailtolouis2020-str...@yahoo.com" <mailtolouis2020-str...@yahoo.com>
> À : Struts Users Mailing List <user@struts.apache.org>
> Envoyé le : Vendredi, 14 Août 2009, 18h12mn 52s
> Objet : Re: Re : Struts2 +  I18N
>
> Not long ago, someone also got similar problem:
>
> http://markmail.org/message/mozukqgrnhfbq7od?q=s2+and+default+locale/language+list:org.apache.struts.users/
>
>
>
>
> ________________________________
> From: Julien HENRY <henr...@yahoo.fr>
> To: Struts Users Mailing List <user@struts.apache.org>
> Sent: Friday, August 14, 2009 4:52:28 PM
> Subject: Re : Struts2 +  I18N
>
> Hi,
>
> AFAIK this is the same as adding <constant name="struts.locale" value="en" /> 
> in struts.xml.
>
> BTW I tried your suggestion without much improvement.
>
> I even tried to rename default.properties in default_en.properties => still 
> no english.
>
>
>
>
> ________________________________
> De : BALAJI CRB <balaji_...@spanservices.com>
> À : Struts Users Mailing List <user@struts.apache.org>
> Envoyé le : Vendredi, 14 Août 2009, 17h47mn 37s
> Objet : RE: Struts2 +  I18N
>
> Hi,
>
>
>
> Use struts.locale=en   in your struts.properties file. Hope this works.
>
> Regards,
>
> Balaji C R B
>
>
>
> -----Original Message-----
> From: Julien HENRY [mailto:henr...@yahoo.fr]
> Sent: Friday, August 14, 2009 9:11 PM
> To: user@struts.apache.org
> Subject: Struts2 + I18N
>
>
>
> Hi,
>
>
>
> In my Struts2 application I have the following language files:
>
>
>
> default_de.properties
>
> default_fr.properties
>
> default.properties (contains EN)
>
>
>
> When I start my application, the application is in French (probably because 
> JVM default locale is french). Then I tried to change language by appending 
> ?request_locale=XX in the URL.
>
>
>
> Adding ?request_locale=de works fine. All texts are in German.
>
>
>
> Adding ?request_locale=en doesn't work. All texts are in French.
>
>
>
> I tried to add
>
> <constant name="struts.locale" value="en" />
>
> to struts.xml but no luck.
>
>
>
> How can I tell Struts that the default.properties file is English?
>
>
>
> Thanks,
>
>
>
> Julien
>
>
>
>
>
>
>
>
> DISCLAIMER:
>
> This email message and all attachments are  confidential and may contain 
> information that
> is privileged,  confidential or exempt from  disclosure under applicable law. 
>  If you are
> not  the intended  recipient,  you  are notified  that any dissemination, 
> distribution or
> copying  of this email  is strictly prohibited. If you have received this 
> email in error,
> please notify us immediately by return email or to mailad...@spanservices.com 
> and destroy
> the original message.
>
> Opinions, conclusions, and other  information in  this message that  do not 
> relate to the
> official business of SPAN, shall be understood to be neither given nor 
> endorsed by SPAN.
>
>
>



-- 
"Hey you! Would you help me to carry the stone?" Pink Floyd

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

Reply via email to