You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by Paul Benedict <pb...@apache.org> on 2009/10/04 08:58:32 UTC

Re: bug On struts1: MessageResources.getMessage locale , whether has the problem?

Are you trying to tell us a problem or a recommendation?

2009/8/11 3844370 <38...@163.com>:
>
> On struts1:  MessageResources.getMessage(Locale locale, String key, Object[] args)  , don't use client's locale to format !
> for example: my webApp  has a myResources_en_US.properties : test =your money is {0, number, currency}
>             client's  locale is en_US, server's locale is zh_CN
> my action :
>   MessageResources resource = getResources(request, "myResources");
>   //client's locale
>   Locale userLocale = getLocale(request);
>   //use client's locale to format value , problem is here!
>   String message = resource.getMessage(userLocale, "test", new Object[]{ new Long(10000)})
>
>   the result is : your money is ¥10,000.00 ,
>   problem is: I use english locale to format  “ your money is {0, number, currency}” ,but now why is ¥??
>
>   so, I read  src about getMessage(Locale locale, String key, Object[] args),
>                format = new MessageFormat(escape(formatString));
>                format.setLocale(locale);
>                format.format(args)
>
> for MessageFormat setLocale() , Subformats that have already been created are not affected,
> so, struts1 getMessage(Locale locale, String key, Object[] args),  original idea is use client's locale to format,
> but now use server's locale,  this is the problem!
>
> following is my test procedures:
>  Locale localeEN = new Locale("en", "US");
>
>  // simulate struts1 MessageResources.getMessage(Locale locale, String key, Object[] args)
>  MessageFormat format1 = new MessageFormat(" your money is {0, number, currency}");
>  //now set EN locale already later to format  "your money is {0, number, currency}"
>  format1.setLocale(localeEN);
>  System.out.println(format1.format(new Object[]{ new Long(10000)}));   // your money is ¥10,000.00
>
>  //correct method 1
>  MessageFormat format2 = new MessageFormat(" your money is {0, number, currency}", localeEN);
>  System.out.println(format2.format(new Object[]{ new Long(10000)}));  // your money is $10,000.00
>
>  //correct method 2
>  MessageFormat format3 = new MessageFormat("");
>  format3.setLocale(localeEN);
>  format3.applyPattern(" your money is {0, number, currency}");
>  System.out.println(format3.format(new Object[]{ new Long(10000)})); // your money is $10,000.00
>
> please write back!  Thank you!
>         yours, wangyanning             from  JiNan ShanDong  Province in CHINA
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org