# 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.
webappClassLoader.illegalJarPath = Detectada entrada ilegal de JAR con nombre {0}
webappClassLoader.jdbcRemoveFailed = Ha fallado el desregistro del conductor JDBC para la aplicaci\u00F3n web [{0}]
webappClassLoader.stopped = Acceso ilegal\: esta instancia de aplicaci\u00F3n web ya ha sido parada.  Could not load {0}.  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuraci\u00F3n as\u00ED como para intentar terminar el hilo que motiv\u00F3 el acceso ilegal y no tiene impacto funcional.
webappClassLoader.readError = Error de lectura de recurso\: No pude cargar {0}.
webappClassLoader.clearJdbc = La aplicaci\u00F3n web [{0}] registr\u00F3 el conductor JDBC [{1}] pero fall\u00F3 al anular el registro mientras la aplicaci\u00F3n web estaba parada. Para prevenir un fallo de memoria, se ha anulado el registro del conductor JDBC por la fuerza.
webappClassLoader.clearReferencesResourceBundlesCount = Quitadas las referencias del Resourcebundle  [{0}] desde la cach\u00E9 para la aplicaci\u00F3n web [{1}]
webappClassLoader.clearReferencesResourceBundlesFail = No puede limpiar las referencisa de ResourceBundle para la aplicaci\u00F3n web [{0}]
webappClassLoader.clearRmiInfo = No pude hallar la clase sun.rmi.transport.Target para limpiar el cargador de contexto de clase para la aplicaci\u00F3n web [{0}]. Esto es lo esperado em m\u00E1quinas que no son de Sun.
webappClassLoader.clearRmiFail = No pude limpiar el cargador del contexto de clase referenciado desde sun.rmi.transport.Target para la aplicaci\u00F3n web [{0}]
webappClassLoader.checkThreadLocalsForLeaks.badKey = No puedo determinar la representaci\u00F3n de cadena de la clave del tipo  [{0}]
webappClassLoader.checkThreadLocalsForLeaks.badValue = No puedo determinar la representaci\u00F3n de cadena del valor del tipo  [{0}]
webappClassLoader.checkThreadLocalsForLeaks.unknown = Desconocido
webappClassLoader.checkThreadLocalsForLeaks = La aplicaci\u00F3n web [{0}] cre\u00F3 un ThreadLocal con clave del tipo [{1}] (valor [{2}]) y un valor del tipo [{3}] (valor [{4}]) pero no pudo quitarlo cuando la aplicaci\u00F3n web se par\u00F3. Los hilos se van a renovar con el tiempo para intentar evitar in posible fallo de memoria.
webappClassLoader.checkThreadLocalsForLeaksDebug = La aplicaci\u00F3n web [{0}] cre\u00F3 un ThreadLocal con clave del tipo [{1}] (valor [{2}]). El Threadlocal ha sido puesto correctamente a nulo y la clave ser\u00E1 qutada por el GC.
webappClassLoader.checkThreadLocalsForLeaksFail = No pude revisar las referencias a ThreadLocal para la aplicaci\u00F3n web  [{0}]
webappClassLoader.checkThreadsHttpClient = Hallado hilo keep-alive de HttpClient usando cargador de clase de aplicaci\u00F3n web. Fijado por el hilo de conmutaci\u00F3n al cargador de la clase padre.
webappClassLoader.stopThreadFail = No pude terminar el hilo con nombre [{0}] para la aplicaci\u00F3n web [{1}]
webappClassLoader.stopTimerThreadFail = No pude terminar TimerThread con nombre [{0}] para la aplicaci\u00F3n web [{1}]
webappClassLoader.validationErrorJarPath = no pude validar entrada JAR con nombre {0}
webappClassLoader.warnTimerThread = La aplicaci\u00F3n web [{0}] parece haber arrancado un TimerThread con nombre [{1}] v\u00EDa de la API java.util.Timer, pero no ha podido pararlo. Para prevenir un fallo de memoria, el cron\u00F3metro (y el hilo asociado) hasido cancelado a la fuerza.
webappClassLoader.wrongVersion = (no puedo cargar clase {0})
webappLoader.addRepository = A\u00F1adiendo repositorio {0}
webappLoader.deploy = Desplegando repositorios de clase en directorio de trabajo {0}
webappLoader.jarDeploy = Despliegue del JAR {0} en {1}
webappLoader.classDeploy = Despliegue de archivos de clase {0} en {1}
webappLoader.reloadable = No puedo poner la propiedad recargable a {0}
webappLoader.starting = Arrancando este Cargador
webappLoader.stopping = Parando este Cargador
webappLoader.copyFailure = No pude copiar los recursos
webappLoader.mkdirFailure = No pude crear directorio de destino para copiar los recursos
