################################################################################
##
##  Licensed to the Apache Software Foundation (ASF) under one or more
##  contributor license agreements.  See the NOTICE file distributed with
##  this work for additional information regarding copyright ownership.
##  The ASF licenses this file to You under the Apache License, Version 2.0
##  (the "License"); you may not use this file except in compliance with
##  the License.  You may obtain a copy of the License at
##
##      http://www.apache.org/licenses/LICENSE-2.0
##
##  Unless required by applicable law or agreed to in writing, software
##  distributed under the License is distributed on an "AS IS" BASIS,
##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
##  See the License for the specific language governing permissions and
##  limitations under the License.
##
################################################################################
ASK_BLAZEDS=Apache Flex can optionally integrate with remoting providers like BlazeDS, GraniteDS, WebORB, Red5, AMFPHP, RubyAMF, PyAMF and others. This feature requires flex-messaging-common.jar from the Adobe Flex SDK. The Adobe SDK license agreement for Adobe Flex 4.6 applies to this jar. This license is not compatible with the Apache V2 license. Do you want to install this jar from the Adobe Flex SDK?
ASK_FONTSWF=Apache Flex can optionally integrate with Adobe's embedded font support. This feature requires a few font jars from the Adobe Flex SDK. The Adobe SDK license agreement for Adobe Flex 4.6 applies to these jars. This license is not compatible with the Apache V2 license. Do you want to install these jars from the Adobe Flex SDK?
ASK_OSMF=The Open Source Media Framework (OSMF) used by the video components is licensed under the Mozilla Public License Version 1.1.  Do you want to install the Open Source Media Framework (OSMF)?
ASK_TLF=The Adobe Text Layout Framework (TLF) used by the Spark text components is licensed under the Mozilla Public License Version 1.1.  Do you want to install the Adobe Text Layout Framework (TLF)?
ASK_APACHE_FLEX=The Apache License V2 applies to the Apache Flex SDK.  Do you want to install the Apache Flex SDK?
ASK_ADOBE_AIR_SDK=The Adobe SDK license agreement applies to the Adobe AIR SDK.  Do you want to install the Adobe AIR SDK?
ASK_ADOBE_FLASH_PLAYER_GLOBAL_SWC=The Adobe SDK license agreement applies to the Adobe Flash Player playerglobal.swc.  Do you want to install the Adobe Flash Player playerglobal.swc?
ASK_SWFOBJECT=The MIT License (MIT) applies to the SWFObject utility.  Do you want to install the SWFObject utility?
BTN_LABEL_ADOBE_LICENSE=SHOW ADOBE LICENSE
BTN_LABEL_BROWSE=BROWSE
BTN_LABEL_CLOSE=CLOSE
BTN_LABEL_COPY_LOG=COPY LOG
BTN_LABEL_INSTALL=INSTALL
BTN_LABEL_INSTALL_LOG=INSTALL LOG
BTN_LABEL_MPL_LICENSE=SHOW MPL LICENSE
BTN_LABEL_NEXT=NEXT
BTN_LABEL_BACK=BACK
BTN_DISCLAIMER=Disclaimer
BTN_LABEL_OPEN_APACHE_FLEX_FOLDER=OPEN APACHE FLEX FOLDER
ERROR_CONFIG_XML_LOAD=Error while trying to load XML configuration file: 
ERROR_DIR_NOT_EMPTY=The selected directory is not empty
ERROR_DIR_REQUIRE_ADMIN_RIGHTS=The selected directory requires Administrator rights to write files
ERROR_INVALID_AIR_SDK_URL_MAC=Adobe AIR SDK URL for Mac invalid in configuration file
ERROR_INVALID_AIR_SDK_URL_WINDOWS=Adobe AIR SDK URL for Windows invalid in configuration file
ERROR_INVALID_FLASH_PLAYER_SWC_URL=Flash Player swc URL invalid in configuration file
ERROR_INVALID_FLEX_SDK_DIRECTORY=Invalid Flex SDK directory selected
ERROR_INVALID_SDK_URL=Apache Flex SDK URL invalid in configuration file
ERROR_MIRROR_FETCH=Error while trying to fetch a mirror for downloading the Apache Flex SDK binaries: 
ERROR_NATIVE_PROCESS_ERROR=Native Process error unable to untar Adobe AIR SDK
ERROR_NATIVE_PROCESS_NOT_SUPPORTED=Native Process not supported. Unable to untar Adobe AIR SDK
ERROR_UNABLE_TO_COPY_FILE=Unable to copy file 
ERROR_UNABLE_TO_CREATE_TEMP_DIRECTORY=Unable to create temporary directory
ERROR_UNABLE_TO_DELETE_TEMP_DIRECTORY=Unable to clean up temporary installation directories
ERROR_UNABLE_TO_DOWNLOAD_AIR_SDK=Unable to download Adobe AIR Runtime Kit
ERROR_UNABLE_TO_DOWNLOAD_FILE=Unable to download {0}
ERROR_UNABLE_TO_DOWNLOAD_FLASH_PLAYER_SWC=Unable to download Flash Player swc
ERROR_UNABLE_TO_DOWNLOAD_FLEX_SDK=Unable to download Apache Flex SDK
ERROR_UNABLE_TO_INSTALL_CONFIG_FILES=Unable to install configuration files
ERROR_UNABLE_TO_UNZIP=Unable to unzip file: 
ERROR_UNABLE_TO_DOWNLOAD_SWF_OBJECT=Unable to download SWFObject
ERROR_UNSUPPORTED_OPERATING_SYSTEM=Unsupported operating system
ERROR_VERIFY_FLEX_SDK=The Apache Flex SDK MD5 Signature of the downloaded files does not match the reference value. The file is invalid, installation is aborted.
FETCH_GEO_IP=Trying to fetch the user's country code from the GeoIP service...
FETCH_GEO_IP_DONE=Fetched the user's country code from the GeoIP service.
FETCH_GEO_IP_ERROR=An error occurred while fetching the user's country code from the GeoIP service.
FETCH_MIRROR_CGI=Trying to fetch the SDK download mirror URL from the CGI...
FETCH_MIRROR_CGI_DONE=Fetched the SDK download mirror URL from the CGI.
FETCH_MIRROR_CGI_ERROR=Could not fetch the SDK download mirror URL from the CGI. Going to try the GeoIP route.
FETCH_MIRROR_LIST=Trying to fetch the mirror list from Apache.org...
FETCH_MIRROR_LIST_DONE=Fetched the mirror list from Apache.org.
FETCH_MIRROR_LIST_PARSED=Parsed the mirror list using the country code and got this domain: 
INFO_ABORT_INSTALLATION=Installation aborted
INFO_USER_ABORT_INSTALLATION=User closed the installer before installation was completed. Current step: 
INFO_APP_INVOKED=Invoked in command line mode with the following arguments: 
INFO_CREATING_FLEX_HOME=Creating Apache Flex home
INFO_CREATING_TEMP_DIR=Creating temporary directory
INFO_CURRENT_LANGUAGE=Select Language
INFO_DOWNLOADING_ADOBE_FLEX_SDK=Downloading Adobe Flex SDK from: 
INFO_DOWNLOADING_AIR_RUNTIME_KIT_MAC=Downloading Adobe AIR Runtime Kit for Mac from: 
INFO_DOWNLOADING_AIR_RUNTIME_KIT_WINDOWS=Downloading Adobe AIR Runtime Kit for Windows from: 
INFO_DOWNLOADING_FILE_FROM=Downloading {0} from: {1}
INFO_DOWNLOADING_FLEX_SDK=Downloading Apache Flex SDK from: 
INFO_DOWNLOADED=Download complete 
INFO_ENTER_VALID_FLEX_SDK_PATH=Please enter valid directory path for the Flex SDK
INFO_FINISHED_UNTARING=Finished untaring: 
INFO_FINISHED_UNZIPPING=Finished uncompressing: 
INFO_INSTALLATION_COMPLETE=Installation complete
INFO_INSTALLING=Installing...
INFO_INSTALLING_CONFIG_FILES=Installing frameworks configuration files configured for use with an IDE
INFO_INSTALLING_PLAYERGLOBAL_SWC=Installing Adobe Flash Player playerglobal.swc from: 
INFO_INVOKED_GUI_MODE=invoked in GUI mode
INFO_LICENSE_AGREEMENTS=License Agreements
INFO_NEED_TO_READ_AND_AGREE_TO_LICENSE=This installer will download software from multiple sites with various license agreements. Please click on each item on the left, read the license and confirm that you agree to the terms of each license by checking the checkbox next to it.
INFO_SELECT_AIR_FLASH_PLAYER=Select AIR and Flash Player versions.
INFO_SELECT_AIR=Select AIR version
INFO_SELECT_DIRECTORY=Select the directory where you want to install the Flex SDK
INFO_SELECT_DIRECTORY_INSTALL=Select installation directory
INFO_SELECT_FLASH=Select Flash Player version
INFO_SELECT_FLEX=Select Flex version
INFO_UNZIPPING=Uncompressing: 
INFO_VERIFY_FLEX_SDK_DONE=The Apache Flex SDK MD5 Signature of the downloaded files matches the reference. The file is valid.
INFO_WINDOW_TITLE=Install Apache Flex SDK {0} for use with your IDE
INSTALL_AGREE=I Agree, Install
INSTALL_AGREE_ALL=I agree to all options and licenses, Install
INSTALL_DISAGREE=I Disagree, Don't Install
SELECT_PATH_PROMPT=Where do you want to install the Apache Flex SDK?
STEP_SELECT_AIR_AND_FLASH_VERSION=Select AIR and Flash Player versions.
STEP_CREATE_DIRECTORIES=Create Directories
STEP_REQUIRED_INSTALL_APACHE_FLEX_SDK=Apache Flex SDK (Required)
STEP_REQUIRED_INSTALL_ADOBE_AIR_SDK=Adobe AIR SDK (Required)
STEP_REQUIRED_INSTALL_FLASH_PLAYER_GLOBAL_SWC=Adobe Flash Player playerglobal.swc (Required)
STEP_REQUIRED_INSTALL_SWFOBJECT=SWFObject (Required)
STEP_INSTALL_CONFIG_FILES=Install Framework Configuration Files
STEP_REQUIRED_INSTALL_OSMF=OSMF (Required)
STEP_REQUIRED_INSTALL_TLF=Adobe Text Layout Framework (Required)
STEP_OPTIONAL_INSTALL_BLAZEDS=Remoting Support (Optional)
STEP_OPTIONAL_INSTALL_FONTSWF=Adobe Embedded Font Libraries and Utilities (Optional)
STEP_REQUIRED_UNZIP_AIR_RUNTIME_KIT=Uncompress Adobe AIR Runtime Kit
STEP_UNZIP_AIR_RUNTIME_KIT=Uncompress Adobe AIR Runtime Kit
STEP_UNZIP_FLEX_SDK=Uncompress Apache Flex SDK
STEP_VERIFY_FLEX_SDK=Verifying Apache Flex SDK MD5 Signature
LICENSE_APACHE_V2=Apache V2 License
LICENSE_URL_APACHE_V2=http://www.apache.org/licenses/LICENSE-2.0.html
LICENSE_ADOBE_SDK=Adobe Flex SDK License
LICENSE_URL_ADOBE_SDK=http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf
LICENSE_ADOBE_AIR_SDK=Adobe AIR SDK License
LICENSE_URL_ADOBE_AIR_SDK=http://www.adobe.com/products/air/sdk-eula.html
LICENSE_SWFOBJECT=MIT License
LICENSE_URL_SWFOBJECT=http://opensource.org/licenses/mit-license.php
LICENSE_OSMF=Mozilla Public License Version 1.1
LICENSE_URL_OSMF=http://www.mozilla.org/MPL/
LICENSE_TLF=Mozilla Public License Version 1.1
LICENSE_URL_TLF=http://www.mozilla.org/MPL/
LICENSE_FONTSWF=Adobe Flex SDK License
LICENSE_URL_FONTSWF=http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf
LICENSE_BLAZEDS=Adobe Flex SDK License
LICENSE_URL_BLAZEDS=http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf
INFO_TRACKING=Anonymous usage statistics will be collected in accordance with our privacy policy.
INFO_VERSION=version
INFO_USING_CACHED_FILE=Using file from cache:
