One trick I've used in the past is to put an empty (usually containing a comment saying to look in default.properties) default_en.properties file in the application. Since all entries roll up to the default.properties anyway, if the bundle loader finds the empty file, he gets all warm and fuzzy and everything just seems to work. (*Chris*)
On Fri, Aug 14, 2009 at 3:03 PM, Musachy Barroso <musa...@gmail.com> wrote: > 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)<http://java.sun.com/j2se/1.4.2/docs/api/java/util/ResourceBundle.html#getBundle%28java.lang.String,%20java.util.Locale,%20java.lang.ClassLoader%29> > ) > > > > 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 > >