         locales = chain;
 
         dispatchEvent(new Event(Event.CHANGE));
+    }
+
+    [Bindable(event="change")]
+    public function getAvailableLocales():Array
+    {
+        return availableLocales;
     }
 
     public function addSource(source:Source):void

    }

    private var bundleMap:Object = {};

    [Bindable(event="change")]
    public function getString(bundle:String, key:String, params:Array=null):String


    //--------------------------------------------------------------------------
    //
    //  Properties
    //
    //--------------------------------------------------------------------------

    private var _defaultLocale:String;

    public function get defaultLocale():String
    {
        return _defaultLocale;
    }

    public function set defaultLocale(value:String):void
    {
        if (value == _defaultLocale) return;

        _defaultLocale = value;

        if (locales == null)
        {
            locales = [_defaultLocale];
        }
    }

    //--------------------------------------------------------------------------
    //
    //  Methods
    //
    //--------------------------------------------------------------------------

    public function getLocale():String
    {
        return locales && locales.length > 0 ? locales[0] : null;
    }

    public function setLocale(locale:String):void
    {
        if (locale == null)
            locale = _defaultLocale;

        setLocales([locale]);
    }

