FLEX-34393 installer should remember language
diff --git a/installer/src/InstallApacheFlex.mxml b/installer/src/InstallApacheFlex.mxml
index cbb616d..a10fb4b 100644
--- a/installer/src/InstallApacheFlex.mxml
+++ b/installer/src/InstallApacheFlex.mxml
@@ -145,7 +145,7 @@
         import ws.tink.spark.skins.controls.InstallApacheFlexSkin;
         
         // embed us strings so we can always have them if we can't get to the locale files
-        [Embed(source="properties/en_US.properties",mimeType="application/octet-stream")]
+        [Embed(source="properties/en_US.properties", mimeType="application/octet-stream")]
         private var en_US_Properties:Class;
         
         private var cleanedUp:Boolean;
@@ -160,6 +160,7 @@
         private var showDevBuilds:Boolean = false;
         private var usingDownloadCache:Boolean;
         private var downloadCacheFolder:String;
+        private var userDefaultLanguage:String;
         private var firstTime:Boolean = true;
         private var legacy:Boolean = true;
         private var nocache:Boolean = true;
@@ -393,6 +394,7 @@
             var so:SharedObject = SharedObject.getLocal("InstallApacheFlex");
             usingDownloadCache = so.data.usingDownloadCache;
             downloadCacheFolder = so.data.downloadCacheFolder;
+            userDefaultLanguage = so.data.userDefaultLanguage;
         }
         
         protected function handleApplicationComplete(event:FlexEvent):void
@@ -460,9 +462,9 @@
         
         private function getIndexOfEnUS():int
         {
-            for (var i:int = 0; i < _langSelect.dataProvider.length; i++) 
+            for (var i:int = 0; i < _langSelect.dataProvider.length; i++)
             {
-                if(_langSelect.dataProvider.getItemAt(i).data == "en_US")
+                if (_langSelect.dataProvider.getItemAt(i).data == "en_US")
                 {
                     return i;
                 }
@@ -491,11 +493,22 @@
         {
             loadLanguage("en_US", loadUSComplete);
         }
+
         private function loadUSComplete():void
         {
-            var userLocale:String = new StringTools(LocaleID.DEFAULT).actualLocaleIDName.replace("-", "_");
+            var userLocale:String;
             
-            if (languageOverride) {
+            if (userDefaultLanguage)
+            {
+                userLocale = userDefaultLanguage;
+            }
+            else
+            {
+                userLocale = new StringTools(LocaleID.DEFAULT).actualLocaleIDName.replace("-", "_");
+            }
+            
+            if (languageOverride)
+            {
                 userLocale = languageOverride;
             }
             
@@ -583,16 +596,28 @@
         {
             resourceManager.localeChain = [ ViewResourceConstants.DEFAULT_LANGUAGE ];
             
-            var userLocale:String = new StringTools(LocaleID.DEFAULT).actualLocaleIDName.replace("-", "_");
+            var userLocale:String;
             
-            if (languageOverride) {
+            if (userDefaultLanguage)
+            {
+                userLocale = userDefaultLanguage;
+            }
+            else
+            {
+                userLocale = new StringTools(LocaleID.DEFAULT).actualLocaleIDName.replace("-", "_");
+            }
+            
+            if (languageOverride)
+            {
                 userLocale = languageOverride;
             }
             log("Using Locale: " + userLocale);
             
             var n:int = supportedLanguages.length;
-            for (var i:int = 0; i < n; i++) {
-                if (supportedLanguages[i].data == userLocale) {
+            for (var i:int = 0; i < n; i++)
+            {
+                if (supportedLanguages[i].data == userLocale)
+                {
                     _langSelect.selectedIndex = i;
                     
                     resourceManager.localeChain = [ userLocale, "en_US" ];
@@ -611,7 +636,7 @@
             updateWindow();
             
             _mirrorURLUtil.logMessages = new LogMessagesVO(_viewResourceConstants.FETCH_MIRROR_CGI, _viewResourceConstants.FETCH_MIRROR_CGI_DONE,
-                _viewResourceConstants.FETCH_MIRROR_CGI_ERROR);
+                    _viewResourceConstants.FETCH_MIRROR_CGI_ERROR);
             
             _mirrorURLUtil.getMirrorURL(Constants.APACHE_FLEX_URL + _mirrorURLCGI, getMirrorURLResultHandler);
             CursorManager.removeBusyCursor();
@@ -1093,7 +1118,7 @@
             var flashVersionID:String = flashPlayerVersion.selectedItem.versionID;
             
             setXMLVariables(); // as AIR and Flash version may of changed
-            
+           
             log("SDK version " + APACHE_FLEX_BIN_DISTRO_VERSION_DISPLAY);
             
             if (flexVersion.selectedItem.needsAIR) {
@@ -2510,11 +2535,18 @@
         {
             var defaultLanguage:String = ViewResourceConstants.DEFAULT_LANGUAGE;
             
-            if (_langSelect.selectedItem["data"] == defaultLanguage) {
+            var so:SharedObject = SharedObject.getLocal("InstallApacheFlex");
+            so.data.userDefaultLanguage = _langSelect.selectedItem["data"];
+            so.flush();
+            
+            if (_langSelect.selectedItem["data"] == defaultLanguage)
+            {
                 resourceManager.localeChain = [ defaultLanguage ];
                 resourceManager.update();
                 setButtonWidths();
-            } else {
+            }
+            else
+            {
                 loadLanguage(_langSelect.selectedItem["data"], _langSelect_changeCompleteHandler);
             }
         }
@@ -2662,7 +2694,7 @@
             }                
             if (usingDownloadCache && !nocache)
             {
-                var cacheURL:String
+                var cacheURL:String;
                 if (_useMirror && url.indexOf(useMirrorPath(_mirrorURLUtil.mirrorURL)) != -1)
                 {
                     cacheURL = url.substr(useMirrorPath(_mirrorURLUtil.mirrorURL).length);
@@ -2705,7 +2737,7 @@
                 {
                     if (debugMode)
                         log("download complete preparing to cache");
-                    var cacheURL:String
+                    var cacheURL:String;
                     if (_useMirror && url.indexOf(useMirrorPath(_mirrorURLUtil.mirrorURL)) != -1)
                     {
                         cacheURL = url.substr(useMirrorPath(_mirrorURLUtil.mirrorURL).length);