2010-10-23 23 views
2

J'ai un ENUM simulé comme suit:Comment localiser Flex/Actionscript "enums" pour assurer la capacité de liaison?

public class Sport { 
    public static const BASEBALL:Sport = new MyEnum("Baseball", "Baseball ..."); 
    public static const FOOTBALL:Sport = new MyEnum("Football", "Football ..."); 

    public var label:String; 
    public var description:String; 

    public function Sport(label:String, description:String):void { 
     this.label = label; 
     this.description = description; 
    } 
} 

et les boutons qui se lient à ces énumérations comme suit:

<mx:Button label="{Sport.BASEBALL.label}" toolTip="{Sport.BASEBALL.description}"/> 

-je besoin maintenant de localiser cette ENUM, mais ne l'ai pas eu beaucoup de chance d'obtenir la liaison à jour avec tout le reste quand je mets à jour les paramètres régionaux:

resourceManager.localeChain = [ localeComboBox.selectedItem ]; 

J'ai essayé apporteurs de liaison à l'événement « changement » qui se prétendument s lancé par ResourceManager, mais cela ne semble pas fonctionner. Des idées?

Répondre

3

Vous pouvez utiliser

<mx:Button label="{resourceManager.getString('resourceBundleName', Sport.BASEBALL.label)}" toolTip="{resourceManager.getString('resourceBundleName', Sport.BASEBALL.description)}"/> 

Sport.BASEBALL.label et Sport.BASEBALL.description sont les clés de votre ResourceBundle.

Vous pouvez également jeter un oeil à BabelFx ce qui élimine le besoin d'insérer toutes ces affreuses {resourceManager.getString(...)} déclarations. Il utilise l'injection à l'exécution pour localiser votre application.

+0

Vrai, c'est une option. Cependant, cela ne semble pas optimal. Je vais jeter un coup d'oeil à BabelFX. – wachunga