Try calling invalidateList() on the list-based component that you want to update with the new locale.
Gordon Smith Adobe Flex SDK Team ________________________________ From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Richard Rodseth Sent: Friday, June 27, 2008 9:48 AM To: flexcoders@yahoogroups.com Subject: Re: [flexcoders] Re: internationalization @ switching runtime This is working out nicely for me (the eval trick, and the fact that ResourceManager.getString can take arguments). The one case where I can't push a direct ResourceManager call all the way into a binding expression is when labelFunctions or dataTipFunctions are required. In that case, assuming I override ResourcesChanged, what's the best way to re-trigger the functions?. Assign them to null, then back? Call invalidateDisplayList ? On Sat, Jun 21, 2008 at 9:21 PM, Richard Rodseth <[EMAIL PROTECTED] <mailto:rrodseth%40gmail.com> > wrote: > That's very clever. > > Gordon's suggestion of adding [Bindable] metadata to the buildTitle() > method and overriding resourcesChanged() works nicely, and I could > imagine caching some strings in the override, but adding the override > in numerous components is a bit of a nuisance, so your idea is quite > appealing. > > Thanks! > > On Fri, Jun 20, 2008 at 7:53 PM, brent80301 <[EMAIL PROTECTED] <mailto:brent80301%40yahoo.com> > wrote: >> A trick that I have used in this case (when overriding >> resourcesChanged is inconvenient) is to add a property to your >> whatever.properties file that has no value but accepts a parameter >> like the following. >> >> eval = {0} >> >> Then, in your mxml component, do something like the following. >> >> <mx:Label >> text="{resourceManager.getString('whatever','eval',[buildTitle(someParam eter)])}"/> >> >> This will reevaluate when the locale is changed, and the eval property >> will simply pass through the new value. Voila! >> >> -Brent >> >> --- In flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> , "Richard Rodseth" <[EMAIL PROTECTED]> wrote: >>> >>> No, no, I am definitely using the ResourceManager. But the expression >>> is something like >>> >>> text="{buildTitle(someParameter)}" >>> >>> And buildTitle calls static function getUIString which calls >>> getResourceManager followed by some string substitution. >>> >>> On Fri, Jun 20, 2008 at 2:59 PM, Gordon Smith <[EMAIL PROTECTED]> wrote: >>> > If you're not using MXML databinding to write code like >>> > >>> > >>> > >>> > <Button id="b" label="{resourceManager.getString(...)}"/> >>> > >>> > >>> > >>> > then you can override the resourcesChanged() method and reassign >> the new >>> > string, as in >>> > >>> > >>> > >>> > b.label = resourceManager.getString(...); >>> > >>> > >>> > >>> > The ResourceManager works with resources in ResourceBundles, which >> normally >>> > get compiled from .properties files. Are you loading .properties >> files at >>> > runtime and parsing them yourself to get keys and values? In that >> case, you >>> > can create new instances of ResourceBundle at runtime, put your >> resources >>> > into them, and install them into the ResourceManager like this: >>> > >>> > >>> > >>> > var rb:ResourceBundle = new ResourceBundle(locale, bundleName); >>> > >>> > rb.content[key1] = value1; >>> > >>> > rb.content[key2] = value2; >>> > >>> > ... >>> > >>> > resourceManager.addResourceBundle(rb); >>> > >>> > >>> > >>> > Gordon Smith >>> > >>> > Adobe Flex SDK Team >>> > >>> > >>> > >>> > ________________________________ >>> > >>> > From: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> >> [mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> ] On >>> > Behalf Of Richard Rodseth >>> > Sent: Friday, June 20, 2008 2:37 PM >>> > To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> >>> > Subject: Re: [flexcoders] internationalization @ switching runtime >>> > >>> > >>> > >>> > Gordon, >>> > >>> > Forgive me (or ignore this) if it's in the docs. >>> > >>> > Does this assume that the ResourceManager.getString call is in the >>> > binding expression? >>> > Currently I have some static utilities that load strings like "Hello, >>> > {0}" from properties files and then do parameter substitution. I've >>> > been wondering how that would work out in a runtime locale switching >>> > scenario. >>> > >>> > On Fri, Jun 20, 2008 at 2:14 PM, Gordon Smith <[EMAIL PROTECTED]> wrote: >>> >> You want to learn about the ResourceManager class in Flex 3. It >> allows you >>> >> to simply change its localeChain property at runtime and have the >> entire >>> >> application redraw in a new language. >>> >> >>> >> >>> >> >>> >> Gordon Smith >>> >> >>> >> Adobe Flex SDK Team >>> >> >>> >> >>> >> >>> >> ________________________________ >>> >> >>> >> From: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> >> [mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> ] On >>> >> Behalf Of artur_desig2dev >>> >> Sent: Friday, June 20, 2008 6:12 AM >>> >> To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> >>> >> Subject: [flexcoders] internationalization @ switching runtime >>> >> >>> >> >>> >> >>> >> forgive my newbie question.. >>> >> >>> >> just wanted to find out the best practice on this to date. >>> >> on how to change all the components' language at runtime. >>> >> >>> >> i found 2 methods of doing this: >>> >> >>> >> http://flexme.wordpress.com/2007/07/11/internationalization-in-flex/ <http://flexme.wordpress.com/2007/07/11/internationalization-in-flex/> >>> >> >>> >> http://www.herrodius.com/blog/123 <http://www.herrodius.com/blog/123> >>> >> http://flexme.wordpress.com/2007/07/11/internationalization-in-flex/ <http://flexme.wordpress.com/2007/07/11/internationalization-in-flex/> >>> >> >>> >> thanks >>> >> >>> >> >>> > >>> > >>> >> >> >