2

次のようなシミュレートされた列挙型があります。

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;
    }
}

これらの列挙型にバインドするボタンは次のとおりです。

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

この列挙型をローカライズする必要がありますが、ロケールを更新するときにバインディングを他のすべてのものと一緒に更新するのはうまくいきませんでした:

resourceManager.localeChain = [ localeComboBox.selectedItem ];

ResourceManagerによってスローされると思われる「変更」イベントにゲッターをバインドしようとしましたが、うまくいかないようです。何か案は?

4

1 に答える 1

3

あなたが使用することができます

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

とは ResourceBundleSport.BASEBALL.labelSport.BASEBALL.descriptionキーです。

BabelFxを見ることもできます。これにより、これらの醜い{resourceManager.getString(...)}ステートメントをすべて挿入する必要がなくなります。ランタイム インジェクションを使用してアプリケーションをローカライズします。

于 2010-10-23T09:08:13.260 に答える