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