################################################################################
##
##  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.
##
################################################################################


yes.no.prompts=y,n
yes=y
no=n

flash.prompt.text=\
Apache Flex SDK uses the Adobe Flash Player's playerglobal.swc to build Adobe Flash applications.\n\
\n\
Για το Adobe Flash Player playerglobal.swc ισχύει η\n\
συμφωνία χρήσης του Adobe SDK License.\n\
http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf,\n\
By downloading, modifying, distributing, using and/or accessing any files the playerglobal.swc file\n\
you agree to the terms and conditions of the applicable end user license agreement.\n\
\n\
In addition to the Adobe license terms, you also agree to be bound by the third-party terms specified here:\n\
http://www.adobe.com/products/eula/third_party/.\n\
Adobe recommends that you review these third-party terms.\n\
\n\
Η άδεια αυτή δεν είναι συμβατή με την άδεια χρήσης Apache V2.\n\
Θέλετε να εγκαταστήσετε το Adobe Flash Player playerglobal.swc;

air.prompt.text=\
Apache Flex SDK uses the Adobe AIR SDK to build Adobe AIR applications.\n\
Για το Adobe AIR SDK ισχύει η συμφωνία χρήσης του Adobe SDK License.\n\
http://www.adobe.com/products/air/sdk-eula.html.\n\
Η άδεια αυτή δεν είναι συμβατή με την άδεια χρήσης Apache V2.\n\
Θέλετε να εγκαταστήσετε το Adobe AIR SDK;

osmf.prompt.text=\
Για το Open Source Media Framework (OSMF) που χρησιμοποιείται απο τα\n\
αντικείμενα video ισχύει η συμφωνία χρήσης του Mozilla Public License Version 1.1.\n\
Mozilla Public License Version 1.1:\n\
\n\
The contents of the file(s) are subject to the Mozilla Public License Version 1.1.\n\
You may not use the file(s) except in compliance with the License. \n\
You may obtain a copy of the License here:\n\
http://www.mozilla.org/MPL/. \n\
By downloading, modifying, distributing, using and/or accessing the file(s), \n\
you agree to the terms and conditions of the applicable license agreement.\n\
\n\
I have read the MPL1.1 license information above?"

swfobject.prompt.text=\
Apache Flex SDK uses the SWFObject when building Adobe Flash applications.\n\
Για το SWFObject ισχύει η συμφωνία χρήσης του MIT License (MIT).\n\
http://opensource.org/licenses/mit-license.php.\n\
This license is compatible with the Apache v2 license.\n\
Θέλετε να εγκαταστήσετε το SWFObject;

blazeds.prompt.text=\
Το Apache Flex μπορεί προαιρετικά να χρησιμοποιήσει το Adobe BlazeDS.\n\
Η λειτουργία αυτή απαιτεί το αρχείο flex-messaging-common.jar που\n\
βρίσκεται στο Adobe Flex SDK. Για το αρχείο αυτό ισχύει η συμφωνία χρήσης\n\
της άδειας Adobe SDK για το Adobe Flex 4.6.\n\
Η άδεια αυτή δεν είναι συμβατή με την άδεια χρήσης Apache V2.\n\
\n\
Adobe Flex SDK License Agreement:\n\
\n\
All files contained in this Adobe Flex SDK download are subject to and governed by the\n\
Adobe Flex SDK License Agreement specified here: \n\
    http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf, \n\
By downloading, modifying, distributing, using and/or accessing any files in this Adobe Flex SDK, \n\
you agree to the terms and conditions of the applicable end user license agreement.\n\
\n\
In addition to the Adobe license terms, you also agree to be bound by the third-party terms specified here: \n\
    http://www.adobe.com/products/eula/third_party/. \n\
Adobe recommends that you review these third-party terms.\n\
\n\
Θέλετε να εγκαταστήσετε το αρχείο αυτά απο το Adobe Flex SDK;

fontswf.prompt.text=\
Το Apache Flex μπορεί προαιρετικά να χρησιμοποιήσει την υποστήριξη που παρέχει\n\
η Adobe για ενσωματωμένες γραματοσειρές. Η λειτουργία αυτή απαιτεί κάποια jar\n\
αρχεία που υπάρχουν στο Adobe Flex SDK. Για τα αρχεία αυτά ισχύει η συμφωνία χρήσης\n\
της άδειας Adobe SDK για το Adobe Flex 4.6. \n\
Η άδεια αυτή δεν είναι συμβατή με την άδεια χρήσης Apache V2.\n\
\n\
Adobe Flex SDK License Agreement:\n\
\n\
All files contained in this Adobe Flex SDK download are subject to and governed by the\n\
Adobe Flex SDK License Agreement specified here: \n\
    http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf, \n\
By downloading, modifying, distributing, using and/or accessing any files in this Adobe Flex SDK, \n\
you agree to the terms and conditions of the applicable end user license agreement.\n\
\n\
In addition to the Adobe license terms, you also agree to be bound by the third-party terms specified here: \n\
    http://www.adobe.com/products/eula/third_party/. \n\
Adobe recommends that you review these third-party terms.\n\
\n\
Θέλετε να εγκαταστήσετε τα αρχεία αυτά απο το Adobe Flex SDK;
 
unable.to.find.java=Unable to find Java executable.  Please set JAVA_HOME environment variable

install.complete.echo=${basedir} is now an IDE compatible folder
find.java.echo.pattern=Java is $${java.executable}
mac.copy.echo.pattern=Copying files from $${download.dir}/airsdk/$${srcdir} to $${destdir}

INFO_DOWNLOADING_FILE_FROM=Γίνεται λήψη του {0}  από: {1}
INFO_DOWNLOADING_AIR_RUNTIME_KIT_MAC=Γίνεται λήψη του Adobe AIR Runtime Kit για Mac από:
INFO_DOWNLOADING_AIR_RUNTIME_KIT_WINDOWS=Γίνεται λήψη του Adobe AIR Runtime Kit για Windows από:
INFO_DOWNLOADED=Η λήψη ολοκληρώθηκε
INFO_FINISHED_UNTARING=Η αποσυμπίεση τελείωσε:
INFO_FINISHED_UNZIPPING=Η αποσυμπίεση τελείωσε:
INFO_INSTALLING_CONFIG_FILES=Γίνεται εγκατάσταση των αρχείων ρυθμίσεων του framework που έχουν ρυθμιστεί για χρήση με IDE
INFO_INSTALLING_PLAYERGLOBAL_SWC=Γίνεται εγκατάσταση του Adobe Flash Player playerglobal.swc από:
