################################################################################
##
##  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=s,n
yes=s
no=n

flash.prompt.text=\
Apache Flex SDK utiliza el reproductor Flash de Adobe playerglobal.swc, para poder construir aplicaciones Flash.\n\
\n\
Adobe Flash Player playerglobal.swc se ofrece bajo los términos y condiciones\n\
de la licencia de Adobe SDK, que puede encontrar aqui:\n\
http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf,\n\
Al descargar, modificar, distribuir, usar y/o accededer de cualquier modo al fichero playerglobal.swf\n\
estará aceptando los términos y condiciones aplicables, de la correspondiente licencia de usuario.\n\
\n\
Además de los términos de licencia de Adobe, tambien quedará vinculado a los términos relativos a terceros, especificados aqui:\n\
http://www.adobe.com/products/eula/third_party/.\n\
Adobe recomienda que revise atentamente dichos términos.\n\
\n\
Esta licencia no es compatible con la licencia Apache V2.\n\
¿Quiere instalar Adobe Flash Player playerglobal.swc?

air.prompt.text=\
Apache Flex SDK utiliza el SDK de Adobe AIR, para poder construir aplicaciones AIR.\n\
El SDK de Adobe AIR, se ofrece bajo los términos de la licencia de Adobe SDK, que puede encontrar aqui:\n\
http://www.adobe.com/products/air/sdk-eula.html.\n\
Esta licencia no es compatible con la licencia Apache V2.\n\
¿Quiere instalar Adobe AIR SDK?

osmf.prompt.text=\
Open Source Media Framework (OSMF), utilizado en los componentes de video,\n\
se ofrece bajo los términos de la Mozilla Public License Version 1.1.\n\
Mozilla Public License Version 1.1:\n\
\n\
El contenido de los ficheros, se ofrece bajo los términos de la Mozilla Public License Version 1.1.\n\
No debe utilizar dichos fichero, a menos que sea bajo las condiciones de la Licencia.\n\
Puede obtener una copia de la Licencia aquí:\n\
http://www.mozilla.org/MPL/. \n\
Al descargar, modificar, distribuir, usar y/o accededer de cualquier modo los ficheros\n\
estará aceptando los términos y condiciones aplicables, de la correspondiente Licencia.\n\
\n\
¿Ha leido la MPL1.1 y está de acuerdo en instalar Open Source Media Framework (OSMF)?

swfobject.prompt.text=\
Apache Flex SDK utiliza SWFObject cuando construye aplicaciones Adobe Flash.\n\
SWFObject se ofrece bajo licencia MIT (MIT).\n\
http://opensource.org/licenses/mit-license.php.\n\
Esta licencia es compatible con la licencia Apache V2.\n\
¿Quiere instalar SWFObject?

blazeds.prompt.text=\
Apache Flex puede integrarse de manera opcional con Adobe BlazeDS. Esta\n\
característica necesita flex-messaging-common.jar del SDK de Adobe Flex.\n\
Este archivo se ofrecen bajo los términos de la licencia de Adobe SDK para\n\
Adobe Flex 4.6.\n\
Esta licencia no es compatible con la licencia Apache V2.\n\
\n\
Acuerdo de licencia de Adobe Flex SDK:\n\
\n\
Todos los ficheros contenidos en la descarga del SDK de Adobe Flex, son ofrecidos bajo los términos y condiciones\n\
del acuerdo de licencia de Adobe Flex SDK, que puede encontrar aquí:\n\
http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf, \n\
Al descargar, modificar, distribuir, usar y/o accededer de cualquier modo al fichero Adobe Flex SDK, \n\
estará aceptando los términos y condiciones aplicables, de la correspondiente licencia de usuario.\n\
\n\
Además de los términos de licencia de Adobe, tambien quedará vinculado a los términos relativos a terceros, especificados aqui:\n\
http://www.adobe.com/products/eula/third_party/.\n\
Adobe recomienda que revise atentamente dichos términos.\n\
\n\
¿Quiere instalar este archivo desde el SDK de Adobe Flex?

fontswf.prompt.text=\
Apache Flex puede integrarse de manera opcional con el soporte para\n\
fuentes embebidas de Adobe. Esta característica necesita algunos ficheros\n\
de fuentes del SDK de Adobe Flex. Estos archivos se ofrecen bajo los\n\
términos de la licencia de Adobe SDK para Adobe Flex 4.6.\n\
Esta licencia no es compatible con la licencia Apache V2.\n\
\n\
Adobe Flex SDK License Agreement:\n\
\n\
Todos los ficheros contenidos en la descarga del SDK de Adobe Flex, son ofrecidos bajo los términos y condiciones\n\
del acuerdo de licencia de Adobe Flex SDK, que puede encontrar aquí:\n\
http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf, \n\
Al descargar, modificar, distribuir, usar y/o accededer de cualquier modo al fichero Adobe Flex SDK, \n\
estará aceptando los términos y condiciones aplicables, de la correspondiente licencia de usuario.\n\
\n\
Además de los términos de licencia de Adobe, tambien quedará vinculado a los términos relativos a terceros, especificados aqui:\n\
http://www.adobe.com/products/eula/third_party/.\n\
Adobe recomienda que revise atentamente dichos términos.\n\
\n\
¿Quieres instalar estos archivos desde el SDK de Adobe Flex?
 
unable.to.find.java=No se encuentra el ejecutable de Java. Por favor, defina la ruta en la variable de entorno JAVA_HOME

install.complete.echo=${basedir} es ahora una carpeta compatible con los IDE
find.java.echo.pattern=Java es $${java.executable}
mac.copy.echo.pattern=Copiando ficheros desde $${download.dir}/airsdk/$${srcdir} a $${destdir}

INFO_DOWNLOADING_AIR_RUNTIME_KIT_MAC=Descargando Adobe AIR Runtime Kit para Mac desde: 
INFO_DOWNLOADING_AIR_RUNTIME_KIT_WINDOWS=Descargando Adobe AIR Runtime Kit para Windows desde: 
INFO_DOWNLOADING_FILE_FROM=Descargando {0} desde: {1}
INFO_FINISHED_UNTARING=Descompresión finalizada: 
INFO_FINISHED_UNZIPPING=Descompresión finalizada: 
INFO_INSTALLING_CONFIG_FILES=Instalando archivos de configuración para la interacción con IDEs
INFO_INSTALLING_PLAYERGLOBAL_SWC=Instalando Adobe Flash Player playerglobal.swc desde: 
INFO_DOWNLOADED=Descarga finalizada 
