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