You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2019/08/15 15:22:15 UTC

[tomcat] 02/05: Back-port additions and corrections to the Spanish i18n messages

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 5b51c2addc7808c0d1c524c1a84eee41a65ae037
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Aug 15 16:16:39 2019 +0100

    Back-port additions and corrections to the Spanish i18n messages
---
 java/javax/servlet/LocalStrings_es.properties      |   2 +-
 java/javax/servlet/http/LocalStrings_es.properties |   5 +-
 .../catalina/connector/LocalStrings_es.properties  |   4 +
 .../catalina/core/LocalStrings_es.properties       | 148 +++++++++++----------
 .../catalina/deploy}/LocalStrings_es.properties    |  11 +-
 .../catalina/ha/deploy/LocalStrings_es.properties  |  29 ++++
 .../catalina/ha/session/LocalStrings_es.properties |  46 ++++---
 .../catalina/ha/tcp/LocalStrings_es.properties     |  20 +--
 .../catalina/loader/LocalStrings_es.properties     |  18 +--
 .../catalina/manager/LocalStrings_es.properties    |  71 +++++-----
 .../manager/host/LocalStrings_es.properties        |  36 ++---
 .../mbeans}/LocalStrings_es.properties             |   2 +-
 .../catalina/realm/LocalStrings_es.properties      |  79 +++++------
 .../catalina/session/LocalStrings_es.properties    |  52 ++++----
 .../catalina/startup/LocalStrings_es.properties    |  89 +++++++------
 .../catalina/users/LocalStrings_es.properties      |   7 +-
 .../catalina/util/LocalStrings_es.properties       |  17 ++-
 .../catalina/valves/LocalStrings_es.properties     |  29 +++-
 java/org/apache/coyote/LocalStrings_es.properties  |   7 +
 .../apache/coyote/ajp/LocalStrings_es.properties   |   4 +-
 .../coyote/http11/LocalStrings_es.properties       |   7 +-
 .../http11/filters}/LocalStrings_es.properties     |  11 +-
 .../http11/upgrade}/LocalStrings_es.properties     |   3 +-
 .../jasper/resources/LocalStrings_es.properties    |   2 +-
 .../{threads/res => }/LocalStrings_es.properties   |   5 +-
 .../tomcat/util/buf/LocalStrings_es.properties     |   2 +
 .../util/compat}/LocalStrings_es.properties        |   2 +-
 .../tomcat/util/http/LocalStrings_es.properties    |  23 ++++
 .../util/http/parser}/LocalStrings_es.properties   |  13 +-
 .../tomcat/util/scan}/LocalStrings_es.properties   |  12 +-
 .../util/threads/res/LocalStrings_es.properties    |   2 +-
 .../tomcat/websocket/LocalStrings_es.properties    |  44 ++++++
 .../websocket/server}/LocalStrings_es.properties   |  10 +-
 webapps/docs/changelog.xml                         |   4 +
 .../WEB-INF/classes/LocalStrings_es.properties     |   2 +-
 35 files changed, 493 insertions(+), 325 deletions(-)

diff --git a/java/javax/servlet/LocalStrings_es.properties b/java/javax/servlet/LocalStrings_es.properties
index 604e94c..e5348f5 100644
--- a/java/javax/servlet/LocalStrings_es.properties
+++ b/java/javax/servlet/LocalStrings_es.properties
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=No es un carácter ISO 8859-1: {0}
+err.not_iso8859_1=No es un carácter ISO 8859-1: [{0}]
 
 httpConstraintElement.invalidRolesDeny=No se pueden especificar Roles al utilizar DENY (DENEGAR)
 
diff --git a/java/javax/servlet/http/LocalStrings_es.properties b/java/javax/servlet/http/LocalStrings_es.properties
index 089e7d1..b673735 100644
--- a/java/javax/servlet/http/LocalStrings_es.properties
+++ b/java/javax/servlet/http/LocalStrings_es.properties
@@ -14,12 +14,13 @@
 # limitations under the License.
 
 err.cookie_name_blank=El nombre del Cookie no puede ser nulo o de longitud cero
-err.cookie_name_is_token=El nombre de Cookie {0} es una palabra reservada
+err.cookie_name_is_token=El nombre de Cookie [{0}] es una palabra reservada
 err.io.negativelength=Longitud Negativa en el metodo write
+err.io.nullArray=Se pasó un valor Null para el arreglo byte en el método de escritura
 err.io.short_read=Lectura Corta
 
 http.method_delete_not_supported=El Metodo HTTP DELETE no es soportado por esta URL
 http.method_get_not_supported=El Metodo HTTP GET no está soportado por esta URL
-http.method_not_implemented=El Metodo {0} no esta implementado por este servlet para esta URI
+http.method_not_implemented=El Metodo [{0}] no esta implementado por este servlet para esta URI
 http.method_post_not_supported=El Metodo HTTP POST no está soportado por esta URL
 http.method_put_not_supported=El Metodo HTTP PUT no está soportado por esta URL
diff --git a/java/org/apache/catalina/connector/LocalStrings_es.properties b/java/org/apache/catalina/connector/LocalStrings_es.properties
index 872cc69..8983ec1 100644
--- a/java/org/apache/catalina/connector/LocalStrings_es.properties
+++ b/java/org/apache/catalina/connector/LocalStrings_es.properties
@@ -22,6 +22,7 @@ coyoteAdapter.parsePathParam=No puedo analizar los parámetros de ruta mediante
 
 coyoteConnector.MapperRegistration=Mapeador de registro: {0}
 coyoteConnector.cannotRegisterProtocol=No puedo registrar MBean para el Protocolo
+coyoteConnector.invalidPort=El conector no puede inciar debido a que el valor del puerto especificado [{0}] no es válido
 coyoteConnector.parseBodyMethodNoTrace=El método TRACE NO DEBE DE incluir una entidad (vea RFC 2616 Sección 9.6)
 coyoteConnector.protocolHandlerDestroyFailed=Falló la destrucción del manejador de protocolo
 coyoteConnector.protocolHandlerInitializationFailed=Falló la inicialización del manejador de protocolo
@@ -29,6 +30,7 @@ coyoteConnector.protocolHandlerInstantiationFailed=Falló la instanciación del
 coyoteConnector.protocolHandlerPauseFailed=Ha fallado la pausa del manejador de protocolo
 coyoteConnector.protocolHandlerResumeFailed=Ha fallado el rearranque del manejador de protocolo
 coyoteConnector.protocolHandlerStartFailed=Falló el arranque del manejador de protocolo
+coyoteConnector.protocolHandlerStopFailed=Ocurrió un fallo al detener el manejador del protocolo
 coyoteConnector.protocolRegistrationFailed=Falló el registro de JMX
 coyoteConnector.protocolUnregistrationFailed=Ha fallado la parada del manejador de protocolo
 
@@ -38,11 +40,13 @@ coyoteRequest.authenticate.ise=No puedo llamar a authenticate() tras haberse aco
 coyoteRequest.chunkedPostTooLarge=No se han analizado los parámetros porque la medida de los datos enviados meiante "post" era demasiado grande. Debido a que este requerimiento es una parte del original, no puede ser procesado. Utiliza el atributo "maxPostSize" del conector para resolver esta situación, en caso de que la aplicación deba de aceptar POSTs mayores.
 coyoteRequest.getInputStream.ise=getReader() ya ha sido llamado para este requerimiento
 coyoteRequest.getReader.ise=getInputStream() ya ha sido llamado para este requerimiento
+coyoteRequest.gssLifetimeFail=Fallo al obtener el tiempo de vida restante para el usuario principal [{0}]\n
 coyoteRequest.listenerStart=Excepción enviando evento inicializado de contexto a instancia de escuchador de clase {0}
 coyoteRequest.listenerStop=Excepción enviando evento destruído de contexto a instancia de escuchador de clase {0}
 coyoteRequest.noLoginConfig=No se ha configurado mecanismo de autenticación para este contexto
 coyoteRequest.parseParameters=Excepción lanzada al procesar parámetros POST
 coyoteRequest.postTooLarge=No se analizaron los parámetros porque la medida de los datos enviados era demasiado grande. Usa el atributo maxPostSize del conector para resolver esto en caso de que la aplicación debiera de aceptar POSTs más grandes.
+coyoteRequest.sendfileNotCanonical=Incapaz de determinar el nombre canónico del archivo  [{0}] especificado para ser usado con sendfile
 coyoteRequest.sessionCreateCommitted=No puedo crear una sesión después de llevar a cabo la respueta
 coyoteRequest.sessionEndAccessFail=Excepción disparada acabando acceso a sesión mientras se reciclaba el requerimiento
 coyoteRequest.setAttribute.namenull=No pudeo llamar a setAttribute con un nombre nulo
diff --git a/java/org/apache/catalina/core/LocalStrings_es.properties b/java/org/apache/catalina/core/LocalStrings_es.properties
index 13dcc69..ac8c173 100644
--- a/java/org/apache/catalina/core/LocalStrings_es.properties
+++ b/java/org/apache/catalina/core/LocalStrings_es.properties
@@ -13,33 +13,34 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-applicationContext.addFilter.ise=No se pueden añadir filtros al contexto {0} ya que éste ha sido inicializado
+applicationContext.addFilter.ise=No se pueden añadir filtros al contexto [{0}] ya que éste ha sido inicializado
 applicationContext.addListener.iae.cnfe=No puedo crear una instancia del tipo [{0}]
 applicationContext.addListener.iae.sclNotAllowed=Una vez que el primer ServletContextListener ha sido llamado, no se pueden añadir más ServletContextListeners.
 applicationContext.addListener.iae.wrongType=El tipo especificado [{0}] no es uno de los tipos de escuchador esperados
-applicationContext.addListener.ise=No se pueden añadir escuchadores al contexto {0}, una vez que ha sido inicializado.
-applicationContext.addRole.ise=No se pueden añadir roles al contexto {0}, una vez que ha sido inicializado.
-applicationContext.addServlet.ise=No se pueden añadir servlets al contexto {0}, una vez que ha sido inicializado.
+applicationContext.addListener.ise=No se pueden añadir escuchadores al contexto [{0}], una vez que ha sido inicializado.
+applicationContext.addRole.ise=No se pueden añadir roles al contexto [{0}], una vez que ha sido inicializado.
+applicationContext.addServlet.ise=No se pueden añadir servlets al contexto [{0}], una vez que ha sido inicializado.
 applicationContext.addSessionCookieConfig.ise=No se puede poner la configuración de Cookie de Sesión para el contexto {0}, una vez que éste ha sido inicializado.
 applicationContext.attributeEvent=Excepción lanzada por escuchador de eventos de atributos
+applicationContext.invalidServletName=Incapaz de añadir la definición servlet devido a que el nombre servlet no es válido [{0}].
 applicationContext.lookup.error=No pude localizar el recurso [{0}] en el contexto [{1}]
 applicationContext.mapping.error=Error durante mapeo
-applicationContext.requestDispatcher.iae=La Trayectoria {0} no comienza con carácter "/"
-applicationContext.resourcePaths.iae=La Trayectoria {0} no comienza con carácter "/"
+applicationContext.requestDispatcher.iae=La Trayectoria [{0}] no comienza con carácter "/"
+applicationContext.resourcePaths.iae=La Trayectoria [{0}] no comienza con carácter "/"
 applicationContext.role.iae=Un rol individual que se ha de declarar para el contexto [{0}] no puede ser nulo o cadena vacía
 applicationContext.roles.iae=Un arreglo de roles que se ha de declarar para el contexto [{0}] no puede ser nulo o cadena vacía
 applicationContext.setAttribute.namenull=El nombre no puede ser nulo
-applicationContext.setSessionTracking.iae.invalid=El modo de seguimiento de sesión {0} requerido para el contexto {1} no está soportado por este contexto
-applicationContext.setSessionTracking.iae.ssl=Los modos de seguimiento de sesión requeridos para el contexto {0}, incluyó SSL y al menos otro modo. SSL no se puede configurar con otros modos.
-applicationContext.setSessionTracking.ise=No se pueden poner los modos de seguimiento de sesión para el contexto {0} mientras el contexto se está ejecutando.
+applicationContext.setSessionTracking.iae.invalid=El modo de seguimiento de sesión [{0}] requerido para el contexto [{1}] no está soportado por este contexto
+applicationContext.setSessionTracking.iae.ssl=Los modos de seguimiento de sesión requeridos para el contexto [{0}], incluyó SSL y al menos otro modo. SSL no se puede configurar con otros modos.
+applicationContext.setSessionTracking.ise=No se pueden poner los modos de seguimiento de sesión para el contexto [{0}] mientras el contexto se está ejecutando.
 
-applicationDispatcher.allocateException=Excepción de reserva de espacio para servlet {0}
-applicationDispatcher.deallocateException=Excepción de recuperación de espacio para servlet {0}
+applicationDispatcher.allocateException=Excepción de reserva de espacio para servlet [{0}]
+applicationDispatcher.deallocateException=Excepción de recuperación de espacio para servlet [{0}]
 applicationDispatcher.forward.ise=No puedo reenviar después de que la respuesta se haya llevado a cabo.
 applicationDispatcher.forward.throw=El recurso reenviado lanzó un excepción
 applicationDispatcher.include.throw=El recurso incluído lanzó una excepción
-applicationDispatcher.isUnavailable=El Servlet {0} no está disponible en este momento
-applicationDispatcher.serviceException=El Servlet.service() para servlet {0} lanzó una excepción
+applicationDispatcher.isUnavailable=El Servlet [{0}] no está disponible en este momento
+applicationDispatcher.serviceException=El Servlet.service() para servlet [{0}] lanzó una excepción
 applicationDispatcher.specViolation.request=SevletRequest original o ServletRequest original arropado no pasó a RequestDispatcher en violación de SRV.8.2 y SRV.14.2.5.1
 applicationDispatcher.specViolation.response=SevletResponse original o ServletResponse original arropado no pasó a RequestDispatcher en violación de SRV.8.2 y SRV.14.2.5.1
 
@@ -60,28 +61,34 @@ applicationServletRegistration.setServletSecurity.iae=Se ha especificado restric
 applicationServletRegistration.setServletSecurity.ise=No se pueden añadir restricciones de seguridad al servlet [{0}] desplegado en el contexto con el nombre [{1}] ya que el contexto ya ha sido inicializado.
 
 aprListener.aprDestroy=No pude apagar la biblioteca nativa de Apache Tomcat
-aprListener.aprInit=La biblioteca nativa de Apache Tomcat basada en ARP que permite un rendimiento óptimo en entornos de desarrollo no ha sido hallada en java.library.path: {0}
+aprListener.aprInit=La biblioteca nativa de Apache Tomcat basada en ARP que permite un rendimiento óptimo en entornos de desarrollo no ha sido hallada en java.library.path: [{0}]
 aprListener.flags=Capacidades APR: IPv6 [{0}], enviar fichero [{1}], aceptar filtros [{2}], aleatorio [{3}].
-aprListener.initializedOpenSSL=OpenSSL inicializado correctamente ({0})
+aprListener.initializedOpenSSL=OpenSSL inicializado correctamente [{0}]
+aprListener.initializingFIPS=Inicializando modo FIPS...
 aprListener.sslInit=No pude inicializar el SSLEngine (Motor SSL)
-aprListener.tcnInvalid=Se encuentra instalada una versión incompatible {0} de la biblioteca nativa APR de Apache Tomcat, mientras que Tomcat necesita la versión {1}
-aprListener.tcnValid=Cargada la biblioteca nativa APR de Apache Tomcat {0} con la versi�n APR {1}.
-aprListener.tcnVersion=Se encuentra instalada una versión muy vieja {0} de la biblioteca nativa APR de Apache Tomcat, mientras que Tomcat recomienda una versión mayor de {1}
+aprListener.tcnInvalid=Se encuentra instalada una versión incompatible [{0}] de la biblioteca nativa APR de Apache Tomcat, mientras que Tomcat necesita la versión [{1}]
+aprListener.tcnValid=Cargada la biblioteca nativa APR de Apache Tomcat [{0}] con la versión APR [{1}].
+aprListener.tcnVersion=Se encuentra instalada una versión muy vieja [{0}] de la biblioteca nativa APR de Apache Tomcat, mientras que Tomcat recomienda una versión mayor de [{1}]
+aprListener.tooLateForFIPSMode=No se pudo fijar  setFIPSMode: SSL ya ha sido inicializado
 
 asyncContextImpl.requestEnded=El requerimiento asociado con AsyncContext ya ha completado su procesamiento.
 
 containerBase.alreadyStarted=Ya ha sido arrancado el Contenedor {0}
-containerBase.backgroundProcess.cluster=Excepción al procesar clúster {0} de proceso en segundo plano
+containerBase.backgroundProcess.cluster=Excepción al procesar clúster [{0}] de proceso en segundo plano
 containerBase.backgroundProcess.loader=Excepción al procesar cargador {0} de proceso en segundo plano
 containerBase.backgroundProcess.manager=Excepción al procesar gestor {0} de proceso en segundo plano
-containerBase.backgroundProcess.realm=Excepción al procesar reino {0} de proceso en segundo plano
-containerBase.backgroundProcess.valve=Excepción al procesar válvula {0} de proceso en segundo plano
+containerBase.backgroundProcess.realm=Excepción al procesar reino [{0}] de proceso en segundo plano
+containerBase.backgroundProcess.unexpectedThreadDeath=Muerte inesperada de un hilo en segudo plano [{0}]\n
+containerBase.backgroundProcess.valve=Excepción al procesar válvula [{0}] de proceso en segundo plano
 containerBase.notConfigured=No se ha configurado Válvula básica
 containerBase.notStarted=No se ha arrancado el Contenedor {0}
 
+defaultInstanceManager.invalidInjection=Método inválido para el recurso de inserción de anotación
 defaultInstanceManager.privilegedFilter=El filtro de clase {0} es privilegiado y no puede ser cargado mediante esta apliación web
 defaultInstanceManager.privilegedServlet=El Servlet de clase {0} es privilegiado y no puede ser cargado mediante esta aplicación
+defaultInstanceManager.restrictedContainerServlet=El acceso a la clase [{0}] esta prohibido. Esta es una clase restringida  ( implementa la interface ContainerServlet ). Una applicación web debe ser configurada como privilegiada para ser capaz de cargarla
 defaultInstanceManager.restrictedFiltersResource=No se ha hallado el fichero de propiedades restringidas de filtros
+defaultInstanceManager.restrictedListenersResource=No se ha hallado el fichero de propiedades restringidas de escuchadores
 defaultInstanceManager.restrictedListenersResources=No se ha hallado el fichero de propiedades restringidas de escuchadores
 defaultInstanceManager.restrictedServletsResource=No se ha hallado el fichero de propiedades restringidas de servlets
 
@@ -95,40 +102,42 @@ jreLeakListener.keepAliveFail=No pude disparar la creación de la clase sun.net.
 jreLeakListener.ldapPoolManagerFail=No pude disparar la creación de la clase com.sun.jndi.ldap.LdapPoolManager durante el arranque de Tomcat para prevenir posibles fallos de memoria. Esto es lo que se espera si las JVMs no son Sun.
 jreLeakListener.xmlParseFail=Error mientras intentaba prevenir fallos de memoria durante el análisis XML
 
-naming.bindFailed=No pude cambiar (bind) objeto: {0}
-naming.invalidEnvEntryType=La entrada de Entorno {0} tiene un tipo inválido
-naming.invalidEnvEntryValue=La entrada de Entorno {0} tiene un valor inválido
-naming.jmxRegistrationFailed=No pude registrar en JMX: {0}
-naming.namingContextCreationFailed=Falló la creación del contexto de nombres (naming): {0}
-naming.unbindFailed=No pude descambiar (unbind) objecto: {0}
+naming.addEnvEntry=Adicionando entrada de ambiente [{0}]\n
+naming.bindFailed=No pude cambiar (bind) objeto: [{0}]
+naming.invalidEnvEntryType=La entrada de Entorno [{0}] tiene un tipo inválido
+naming.invalidEnvEntryValue=La entrada de Entorno [{0}] tiene un valor inválido
+naming.jmxRegistrationFailed=No pude registrar en JMX: [{0}]
+naming.namingContextCreationFailed=Falló la creación del contexto de nombres (naming): [{0}]
+naming.unbindFailed=No pude descambiar (unbind) objecto: [{0}]
 naming.wsdlFailed=No pude hallar fichero wsdl: {0}
 
 standardContext.alreadyStarted=Ya se ha arrancado el Contexto
-standardContext.applicationListener=Error configurando escuchador de aplicación de clase {0}
+standardContext.applicationListener=Error configurando escuchador de aplicación de clase [{0}]
 standardContext.applicationSkipped=Se ha saltado la instalación de escuchadores de aplicación debido a error(es) previo(s)
 standardContext.badRequest=Trayectoria de requerimiento inválida ({0}).
 standardContext.cluster.noManager=No se ha hallado el gestor. Revisando si hay que usar el gestor de clúster. Clúster configurado: [{0}], Aplicación distribuíble: [{1}]
 standardContext.crlfinurl=El modelo URL "{0}" contiene un CR o LR y por ello nunca coincidirá.
-standardContext.duplicateListener=El escuchador "{0}" ya está configurado para este contexto. La definición duplicada ha sido ignorada.
-standardContext.errorPage.error=La localización de la página de error 0} debe de comenzar con ''/''
+standardContext.duplicateListener=El escuchador [{0}] ya está configurado para este contexto. La definición duplicada ha sido ignorada.
+standardContext.errorPage.error=La localización de la página de error [{0}] debe de comenzar con ''/''
 standardContext.errorPage.required=ErrorPage no puede ser nulo
-standardContext.errorPage.warning=AVISO: La localización de la página de error {0} debe de comenzar con ''/'' en Servlet 2.4
+standardContext.errorPage.warning=AVISO: La localización de la página de error [{0}] debe de comenzar con ''/'' en Servlet 2.4
 standardContext.filterMap.either=El mapeo de filtro debe de especificar o un <url-pattern> o un <servlet-name>
-standardContext.filterMap.name=El mapeo de filtro especifica un nombre desconocido de filtro {0}
-standardContext.filterMap.pattern=<url-pattern> {0} inválido en mapeo de filtro
-standardContext.filterStart=Excepción arrancando filtro {0}
+standardContext.filterMap.name=El mapeo de filtro especifica un nombre desconocido de filtro [{0}]
+standardContext.filterMap.pattern=<url-pattern> [{0}] inválido en mapeo de filtro
+standardContext.filterStart=Excepción arrancando filtro [{0}]
 standardContext.filterStartFailed=No pude arrancar Filtros de aplicación con éxito
-standardContext.invalidWrapperClass={0} no es una subclase de StandardWrapper
+standardContext.invalidWrapperClass=[{0}] no es una subclase de StandardWrapper
 standardContext.isUnavailable=Esta aplicación no está disponible en este momento
-standardContext.listenerStart=Excepción enviando evento inicializado de contexto a instancia de escuchador de clase {0}
+standardContext.listenerStart=Excepción al enviar evento inicializado de contexto a instancia de escuchador de clase [{0}]
 standardContext.listenerStartFailed=No pude arrancar Escuchadores de aplicación con éxito
-standardContext.listenerStop=Excepción enviando evento de contexto destruído a instancia de escuchador de clase {0}
-standardContext.loginConfig.errorPage=La Página de error de Formulario {0} debe de comenzar con ''/''
-standardContext.loginConfig.errorWarning=AVISO: La página de error de Formulario {0} debe de comenzar con ''/'' en Servlet 2.4
-standardContext.loginConfig.loginPage=La página de login de Formulario {0} debe de comenzar con ''/''
-standardContext.loginConfig.loginWarning=AVISO: La página de login de Formulario {0} debe de comenzar con ''/'' en Servlet 2.4
+standardContext.listenerStop=Excepción enviando evento de contexto destruído a instancia de escuchador de clase [{0}]
+standardContext.loginConfig.errorPage=La Página de error de Formulario [{0}] debe de comenzar con ''/''
+standardContext.loginConfig.errorWarning=AVISO: La página de error de Formulario [{0}] debe de comenzar con ''/'' en Servlet 2.4
+standardContext.loginConfig.loginPage=La página de login de Formulario [{0}] debe de comenzar con ''/''
+standardContext.loginConfig.loginWarning=AVISO: La página de login de Formulario [{0}] debe de comenzar con ''/'' en Servlet 2.4
 standardContext.loginConfig.required=LoginConfig no puede ser nula
 standardContext.manager=Configurado un gestor de la clase [{0}]
+standardContext.managerFail=El manejador de sesiones falló al iniciar
 standardContext.mappingError=Error de configuración de MAPEO para URI relativa {0}
 standardContext.namingResource.destroy.fail=No pude destruir recursos de viejo nombre
 standardContext.namingResource.init.fail=No pude inicializar recursos de nuevo nombre
@@ -140,19 +149,20 @@ standardContext.notWrapper=El Hijo de un Contexto debe de ser un Arropador (Wrap
 standardContext.parameter.duplicate=Duplicado parámetro de inicialización de contexto [{0}]
 standardContext.parameter.required=Es necesario poner nombre de parámetro y valor de parámetro
 standardContext.pathInvalid=Una ruta de contexto debe de ser o una cadena vacía o comenzar con "/". La ruta [{0}] no cumple con estos criterios y ha sido cambiada por [{1}]
+standardContext.predestroy.duplicate=Definición duplicada de método @PreDestroy para clase {0}]
 standardContext.reloadingCompleted=Se ha completado la recarga de este Contexto
 standardContext.reloadingFailed=Falló la recarga de este Contexto debido a errores previos
 standardContext.reloadingStarted=Ha comenzado la recarga de Contexto [{0}]
 standardContext.requestListener.requestDestroy=Una excepción durante el envío de requerimiento ha destruído un evento de ciclo de vida (lifecycle event) para la instancia de clase a la escucha (listener) {0}
-standardContext.requestListener.requestInit=Una excepción durante el envío de requerimiento ha iniciado un evento de ciclo de vida (lifecycle event) para la instancia de clase a la escucha (listener) {0}
+standardContext.requestListener.requestInit=Una excepción durante el envío de requerimiento ha iniciado un evento de ciclo de vida (lifecycle event) para la instancia de clase a la escucha (listener) [{0}]
 standardContext.requestListenerConfig.added=Añadida Válvula de escuchador de requerimiento
 standardContext.requestListenerConfig.error=Excepción añadiendo Válvula de escuchador de requerimiento: {0}
 standardContext.requestListenerStartFailed=No pude arrancar válvula de escuchador de requerimiento con exito
 standardContext.resourcesStart=Error arrancando Recursos estáticos
-standardContext.securityConstraint.mixHttpMethod=No está permitido mezclar <http-method> y <http-method-omission> ien la misma  colección de recursos web
-standardContext.securityConstraint.pattern=<url-pattern> {0} inválida en restricción de seguridad
-standardContext.servletMap.name=El mapeo de Servlet especifica un nombre de servlet desconocido {0}
-standardContext.servletMap.pattern=<url-pattern> {0} inválida en mapeo de servlet
+standardContext.securityConstraint.mixHttpMethod=No está permitido mezclar <http-method> y <http-method-omission> en la misma  colección de recursos web
+standardContext.securityConstraint.pattern=<url-pattern> [{0}] inválida en restricción de seguridad
+standardContext.servletMap.name=El mapeo de Servlet especifica un nombre de servlet desconocido [{0}]
+standardContext.servletMap.pattern=<url-pattern> [{0}] inválida en mapeo de servlet
 standardContext.startCleanup=Excepción durante la limpieza tras no poder arrancar
 standardContext.startFailed=Falló en arranque del Contexto [{0}] debido a errores previos
 standardContext.startingContext=Excepción arrancando Contexto con nombre [{0}]
@@ -164,7 +174,7 @@ standardContext.stoppingLoader=Excepción parando Cargador
 standardContext.stoppingManager=Excepción parando Gestor
 standardContext.stoppingWrapper=Excepción parando Arropador (Wrapper) para servlet {0}
 standardContext.urlDecode=No puedo decodificar URL de trayectoria de requerimiento {0}
-standardContext.urlPattern.patternWarning=AVISO: el patrón URL {0} debe de comenzar con ''/'' en Servlet 2.4
+standardContext.urlPattern.patternWarning=AVISO: el patrón URL [{0}] debe de comenzar con ''/'' en Servlet 2.4
 standardContext.urlValidate=No puedo validar trayectoria de requerimiento de URL decodificada {0}
 standardContext.workCreateException=No pude determinar directorio absoluto de trabajo a partir del directorio [{0}] y  CATALINA_HOME [{1}] para el contexto [{2}]
 standardContext.workCreateFail=No pude crear el directorio de trabajo [{0}] para el contexto [{1}]
@@ -175,7 +185,7 @@ standardContextValve.acknowledgeException=No pude reconocer el requerimiento con
 standardEngine.alreadyStarted=Ya ha sido arrancado el Motor
 standardEngine.jvmRouteFail=No pude poner el atributo jvmRoute del Motor para la propiedad del sistema
 standardEngine.mappingError=Error de configuración de MAPEO para nombre de servidor {0}
-standardEngine.noHost=No hay Máquina que coincida con nombre de servidor {0}
+standardEngine.noHost=No hay Máquina que coincida con nombre de servidor [{0}]
 standardEngine.noHostHeader=Requerimiento HTTP/1.1 sin Máquina: cabecera
 standardEngine.notHost=El Hijo de un Motor debe de ser un Máquina
 standardEngine.notParent=El Motor no puede tener un Contenedor padre
@@ -187,7 +197,7 @@ standardEngine.unregister.mbeans.failed=Error al destruir (destroy()) para fiche
 standardHost.accessBase=No puedo acceder a directorio base de documento {0}
 standardHost.alreadyStarted=Ya ha sido arrancada la Máquina
 standardHost.appBase=No existe el directorio base de aplicación {0}
-standardHost.clientAbort=El Cliente Remoto Abortó el Requerimiento, IOException: {0}
+standardHost.clientAbort=El Cliente Remoto Abortó el Requerimiento, IOException: [{0}]
 standardHost.configNotAllowed=No se permite el uso del archivo de configuración
 standardHost.configRequired=Es necesario poner la URL a archivo de configuración
 standardHost.docBase=Ya existe el directorio base de documento {0}
@@ -196,7 +206,7 @@ standardHost.installError=Error desplegando aplicación en trayectoria de contex
 standardHost.installing=Instalando aplicaciones web en trayectoria de contexto {0} desde URL {1}
 standardHost.installingWAR=Instalando aplicación web desde URL {0}
 standardHost.installingXML=Procesando URL de archivo de configuración de Contexto {0}
-standardHost.invalidErrorReportValveClass=No pude cargar clase especifiada de válvula de informe de error: {0}
+standardHost.invalidErrorReportValveClass=No pude cargar clase especifiada de válvula de informe de error: [{0}]
 standardHost.mappingError=Error de configuración de MAPEO para URI de requerimiento {0}
 standardHost.noContext=No se ha configurado Contexto para procesar este requerimiento
 standardHost.noHost=No se ha configurado Máquina para procesar este requerimiento
@@ -227,42 +237,42 @@ standardService.connector.stopFailed=No pude parar el conector [{0}]
 standardService.initialize.failed=Servicio inicializando en {0} falló
 standardService.onameFail=El nombre MBean especificado para el Servicio [{0}] no es válido
 standardService.register.failed=Error registrando servicio en dominio {0}
-standardService.start.name=Arrancando servicio {0}
-standardService.stop.name=Parando servicio {0}
+standardService.start.name=Arrancando servicio [{0}]
+standardService.stop.name=Parando servicio [{0}]
 
 standardThreadExecutor.onameFail=El nombre MBean especificado para el Ejecutor de Hilos [{0}] no es válido
 
 standardWrapper.allocate=Error reservando espacio para una instancia de servlet
-standardWrapper.allocateException=Excepción de reserva de espacio para servlet {0}
+standardWrapper.allocateException=Excepción de reserva de espacio para servlet [{0}]
 standardWrapper.containerServlet=Cargando servlet de contenedor {0}
 standardWrapper.createFilters=Excepción de creación de filtros para servlet {0}
-standardWrapper.deallocateException=Excepción de recuperación de espacio para servlet {0}
-standardWrapper.destroyException=Servlet.destroy() para servlet {0} lanzó excepción
+standardWrapper.deallocateException=Excepción de recuperación de espacio para servlet [{0}]
+standardWrapper.destroyException=Servlet.destroy() para servlet [{0}] lanzó excepción
 standardWrapper.exception0=Informe de Excepción de Tomcat
 standardWrapper.exception1=Ha tenido lugar una Excepción de Servlet
 standardWrapper.exception2=Informe de Excepción:
 standardWrapper.exception3=Causa Raíz:
-standardWrapper.initException=Servlet.init() para servlet {0} lanzó excepción
-standardWrapper.instantiate=Error instanciando clase de servlet {0}
-standardWrapper.isUnavailable=El Servlet {0} no está disponible en este momento
+standardWrapper.initException=Servlet.init() para servlet [{0}] lanzó excepción
+standardWrapper.instantiate=Error instanciando clase de servlet [{0}]
+standardWrapper.isUnavailable=El Servlet [{0}] no está disponible en este momento
 standardWrapper.jasperLoader=Usando cargador de clases (classloader) de Jasper para servlet {0}
 standardWrapper.jspFile.format=El archivo JSP {0} no comienza con carácter ''/''
 standardWrapper.missingClass=El Arropador (Wrapper) no puede hallar clase de servlet {0} o una clase de la que depende
 standardWrapper.missingLoader=El Arropador (Wrapper) no puede hallar Cargador para servlet {0}
 standardWrapper.notChild=El contenedor de Arropador (Wrapper) no puede tener contenedores hijo
-standardWrapper.notClass=No se ha especificado clase de servlet para servlet {0}
+standardWrapper.notClass=No se ha especificado clase de servlet para servlet [{0}]
 standardWrapper.notContext=El contenedor padre para un Arropador (Wrapper) debe de ser un Contexto
-standardWrapper.notFound=No está disponible el Servlet {0}
-standardWrapper.notServlet=La Clase {0} no es un Servlet
-standardWrapper.releaseFilters=Excepción de Liberación de filtros para servlet {0}
-standardWrapper.serviceException=Servlet.service() para servlet {0} lanzó excepción
+standardWrapper.notFound=No está disponible el Servlet [{0}]
+standardWrapper.notServlet=La Clase [{0}] no es un Servlet
+standardWrapper.releaseFilters=Excepción de Liberación de filtros para servlet [{0}]
+standardWrapper.serviceException=Servlet.service() para servlet [{0}] lanzó excepción
 standardWrapper.serviceExceptionRoot=El Servlet.service() para el servlet [{0}] en el contexto con ruta [{1}] lanzó la excepción [{2}] con causa raíz
 standardWrapper.statusHeader=HTTP Estado {0} - {1}
 standardWrapper.statusTitle=Informe de Error de Tomcat
-standardWrapper.unavailable=Marcando el servlet {0} como no disponible
-standardWrapper.unloadException=El Servlet {0} lanzó excepción unload()
-standardWrapper.unloading=No puedo reservar espacio para servlet {0} porque está siendo descargado
-standardWrapper.waiting=Esperando por {0} instancia(s) para recuperar su espacio reservado
+standardWrapper.unavailable=Marcando el servlet [{0}] como no disponible
+standardWrapper.unloadException=El Servlet [{0}] lanzó excepción unload()
+standardWrapper.unloading=No se puede reservar espacio para servlet [{0}] porque está siendo descargado
+standardWrapper.waiting=Esperando por [{0}] instancia(s) para recuperar su espacio reservado
 
-threadLocalLeakPreventionListener.containerEvent.error=Excepción procesando evento de contenedor {0}
-threadLocalLeakPreventionListener.lifecycleEvent.error=Excepción procesando evento de ciclo de vida {0}
+threadLocalLeakPreventionListener.containerEvent.error=Excepción procesando evento de contenedor [{0}]
+threadLocalLeakPreventionListener.lifecycleEvent.error=Excepción procesando evento de ciclo de vida [{0}]
diff --git a/java/javax/servlet/LocalStrings_es.properties b/java/org/apache/catalina/deploy/LocalStrings_es.properties
similarity index 64%
copy from java/javax/servlet/LocalStrings_es.properties
copy to java/org/apache/catalina/deploy/LocalStrings_es.properties
index 604e94c..062d99d 100644
--- a/java/javax/servlet/LocalStrings_es.properties
+++ b/java/org/apache/catalina/deploy/LocalStrings_es.properties
@@ -13,11 +13,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=No es un carácter ISO 8859-1: {0}
-
-httpConstraintElement.invalidRolesDeny=No se pueden especificar Roles al utilizar DENY (DENEGAR)
-
-httpMethodConstraintElement.invalidMethod=Método HTTP inválido
-
-value.false=false
-value.true=true
+namingResources.cleanupCloseSecurity=Incapaz de obtener el método [{0}] para el recurso [{1}] en el contenedor  [{2}] debido a ello no se realizó la limpieza para ese recurso\n
+namingResources.cleanupNoClose=Recurso [{0}] en contenedor [{1}] no tien un método [{2}] por lo cual no ser hace una limpieza para ese recurso
+namingResources.ejbLookupLink=La referencia EJB [{0}] especifica ambas, un ejb-link y un nombre para lookup
diff --git a/java/org/apache/catalina/ha/deploy/LocalStrings_es.properties b/java/org/apache/catalina/ha/deploy/LocalStrings_es.properties
new file mode 100644
index 0000000..d886cce
--- /dev/null
+++ b/java/org/apache/catalina/ha/deploy/LocalStrings_es.properties
@@ -0,0 +1,29 @@
+# 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.
+
+farmWarDeployer.hostOnly=FarmWarDeployer sólo puede operar como un subelemento de una máquina del cluster!
+farmWarDeployer.modInstall=Installando webapp [{0}] desde [{1}]\n
+farmWarDeployer.modInstallFail=Incapaz de instalar WAR file
+farmWarDeployer.msgIoe=Incapáz de leer el archivo de despliegue de la granja
+farmWarDeployer.msgRxDeploy=Recibe el camino de despliegue del cluster [{0}], war [{1}]
+farmWarDeployer.removeFailLocal=Borrado local de [{0}] fallido
+farmWarDeployer.removeFailRemote=El borrado local de [{0}] falló, otro manager tiene la aplicación en servicio!
+farmWarDeployer.sendFragment=Fragmento war enviado al cluster con camino [{0}], war [{1}] a [{2}]\n
+farmWarDeployer.servicingUndeploy=La applicación [{0}] esta en servicion y no pude ser removida del nodo de respaldo del cluster
+farmWarDeployer.undeployEnd=El revertimiendo del despliegue de [{0}] ha terminado.\n
+
+warWatcher.cantListWatchDir=No se pueden listar archivos en WatchDir [{0}]: verifique si es un directorio y tiene permisos de lectura.\n
+warWatcher.checkWarResult=WarInfo.check() devolvió [{0}] para [{1}]
+warWatcher.checkingWar=Verificando archivo WAR [{0}]
diff --git a/java/org/apache/catalina/ha/session/LocalStrings_es.properties b/java/org/apache/catalina/ha/session/LocalStrings_es.properties
index 6b52bc6..ebd685c 100644
--- a/java/org/apache/catalina/ha/session/LocalStrings_es.properties
+++ b/java/org/apache/catalina/ha/session/LocalStrings_es.properties
@@ -13,6 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+backupManager.startUnable=Imposible de iniciar BackupManager: [{0}]\n
+
 deltaManager.createMessage.access=Gestor [{0}]: creado mensaje de sesión [{1}] acceso.
 deltaManager.createMessage.accessChangePrimary=Gestor [{0}]: creado mensaje de sesión [{1}] acceso para cambiar el primario.
 deltaManager.createMessage.allSessionData=Gestor [{0}] envía todos los datos de sesión.
@@ -20,44 +22,46 @@ deltaManager.createMessage.allSessionTransfered=Gestor [{0}] envía todos los da
 deltaManager.createMessage.delta=Gestor [{0}]: crea mensaje de sesión [{1}] de requerimiento delta.
 deltaManager.createMessage.expire=Gestor [{0}]: crea mensaje de sesión [{1}] de expiración.
 deltaManager.createMessage.unableCreateDeltaRequest=No puedo serializar requerimiento delta para la id de sesión [{0}]
-deltaManager.createSession.newSession=Creada una DeltaSession con Id [{0}] Total contador={1}
-deltaManager.dropMessage=Gestor [{0}]: Quita mensaje {1} dentro de fase sincronizada GET_ALL_SESSIONS fecha inicio {2} fecha mensaje {3}
+deltaManager.createSession.newSession=Creada una DeltaSession con Id [{0}] Total contador=[{1}]
+deltaManager.dropMessage=Gestor [{0}]: Quita mensaje [{1}] dentro de fase sincronizada GET_ALL_SESSIONS fecha inicio [{2}] fecha mensaje [{3}]
 deltaManager.expireSessions=Gestor [{0}] expirando sesiones al apagar
 deltaManager.foundMasterMember=Hallado para contexto [{0}] el miembro maestro de réplica [{1}]
-deltaManager.loading.cnfe=ClassNotFoundException al cargar sesiones persistentes: {0}
-deltaManager.loading.existing.session=sobrecarga en sesión existente {0}
-deltaManager.loading.ioe=IOException al cargar sesiones persistentes: {0}
+deltaManager.loading.cnfe=ClassNotFoundException al cargar sesiones persistentes: [{0}]
+deltaManager.loading.existing.session=sobrecarga en sesión existente [{0}]
+deltaManager.loading.ioe=IOException al cargar sesiones persistentes: [{0}]
 deltaManager.loading.withContextClassLoader=Gestor [{0}]: Cargando los datos de objeto con un cargador de clase de contexto.
 deltaManager.loading.withoutClassLoader=Gestor [{0}]: Cargando los datos de objeto sin un cargador de clase de contexto.
 deltaManager.managerLoad=Excepción cargando sesiones desde almacenaje persistente
 deltaManager.noCluster=Arrancando... no hay clúster asociado con este contexto: [{0}]
+deltaManager.noContextManager=Manejador [{0}]: En respuesta al mensaje ''Tomar todos los datos de sesión (Get all session data)'' enviado a [{1}], recibión el mensaje ''El manejador no machea con ningún contexto (No matching context manager)'' luego de [{2}] ms.\n
 deltaManager.noMasterMember=Arrancando... sin otro miembro para el contexto [{0}] en dominio [{1}]
 deltaManager.noMembers=Gestor [{0}]: saltando estado de transferencia. No hay miembros activos en grupo de clúster.
-deltaManager.noSessionState=Gestor [{0}]: No se ha recibido estado de sesión a las {1}, agotando tiempo tras {2} ms.
+deltaManager.noSessionState=Gestor [{0}]: No se ha recibido estado de sesión a las [{1}], agotando tiempo tras [{2}] ms.
 deltaManager.receiveMessage.accessed=Gestor [{0}]: accedida sesión [{1}] recibida.
 deltaManager.receiveMessage.allSessionDataAfter=Gestor [{0}]: estado de sesión deserializado
 deltaManager.receiveMessage.allSessionDataBegin=Gestor [{0}]: recibidos datos de estado de sesión
 deltaManager.receiveMessage.createNewSession=Gestor [{0}]: creada sesión [{1}] recibida.
 deltaManager.receiveMessage.delta=Gestor [{0}]: delta sesión [{1}] recibida.
+deltaManager.receiveMessage.delta.unknown=Manejador [{0}]: recibió una diferencia de sesión para una sesión desconocida [{1}]
 deltaManager.receiveMessage.error=Gestor [{0}]: No puedo recibir mensaje a través del canal TCP
-deltaManager.receiveMessage.eventType=Gestor [{0}]: recibido SessionMessage de tipo=({1}) desde [{2}]
+deltaManager.receiveMessage.eventType=Gestor [{0}]: recibido SessionMessage de tipo=[{1}] desde [{2}]
 deltaManager.receiveMessage.expired=Gestor [{0}]: expirada sesión [{1}] recibida.
 deltaManager.receiveMessage.transfercomplete=Gestor [{0}] recibido desde nodo [{1}:{2}] estado de sesión transferido.
 deltaManager.receiveMessage.unloadingAfter=Gestor [{0}]: completada la descarga de sesiones
 deltaManager.receiveMessage.unloadingBegin=Gestor [{0}]: iniciada descarga de sesiones
-deltaManager.registerCluster=Registrar gestor {0} a elemento de clúster {1} con nombre {2}
-deltaManager.sendMessage.newSession=El gestor [{0}] envía nueva sesión ({1})
-deltaManager.sessionReceived=Gestor [{0}]; estado de sesión enviado a las {1} recibido en {2} ms.
-deltaManager.startClustering=Iniciando gestor de clúster a las {0}
+deltaManager.registerCluster=Registrar gestor [{0}] a elemento de clúster [{1}] con nombre [{2}]
+deltaManager.sendMessage.newSession=El gestor [{0}] envía nueva sesión [{1}]
+deltaManager.sessionReceived=Gestor [{0}]; estado de sesión enviado a las [{1}] recibido en [{2}] ms.
+deltaManager.startClustering=Iniciando gestor de clúster a las [{0}]
 deltaManager.stopped=El gestor [{0}] se está parando
 deltaManager.unableSerializeSessionID=No puedo seriallizar la ID de sesión [{0}]
-deltaManager.unloading.ioe=IOException al grabar sesiones persistentes: {0}
-deltaManager.waitForSessionState=Gestor [{0}], requiriendo estado de sesión desde {1}. Esta operación se agotará si no se recibe estado de sesión dentro de {2} segundos.
+deltaManager.unloading.ioe=IOException al grabar sesiones persistentes: [{0}]
+deltaManager.waitForSessionState=Gestor [{0}], requiriendo estado de sesión desde [{1}]. Esta operación se agotará si no se recibe estado de sesión dentro de [{2}] segundos.
 
-deltaRequest.showPrincipal=El Principal [{0}] está puesto a sesión {1}
-deltaRequest.wrongPrincipalClass=DeltaManager sólo soporta GenericPrincipal. Tu reino utilizó clase principal {0}.
+deltaRequest.showPrincipal=El Principal [{0}] está puesto a sesión [{1}]
+deltaRequest.wrongPrincipalClass=DeltaManager sólo soporta GenericPrincipal. Tu reino utilizó clase principal [{0}].
 
-deltaSession.notifying=Notificando clúster de expiración primaria={0} sessionId [{1}]
+deltaSession.notifying=Notificando clúster de expiración primaria=[{0}] sessionId [{1}]
 deltaSession.readAttribute=sesión [{0}] cargando atributo [{1}] con valor [{2}]
 deltaSession.readSession=readObject() cargando sesión [{0}]
 deltaSession.valueBinding.ex=Oyente ligándose a sesión lanzó una excepción
@@ -72,7 +76,7 @@ jvmRoute.clusterListener.stopped=Clúster JvmRouteSessionIDBinderListener parado
 jvmRoute.configure.warn=Por favor, ¡configura tu JvmRouteBinderValve en la válvula de máquina, no en la válvula del contexto!
 jvmRoute.contextNotFound=¡Contexto [{0}] no hallado en el nodo [{1}]!
 jvmRoute.failover=Detectada una caída con diferente jvmRoute - ruta original: [{0}] nueva: [{1}] en id de sesión [{2}]
-jvmRoute.foundManager=Hallado Clúster DeltaManager {0} en {1}
+jvmRoute.foundManager=Hallado Clúster DeltaManager [{0}] en [{1}]
 jvmRoute.hostNotFound=No hallada máquina [{0}]
 jvmRoute.listener.started=Arrancado Oyente Ligador de SessionID
 jvmRoute.listener.stopped=Parado Oyente Ligador de SessionID
@@ -80,17 +84,17 @@ jvmRoute.lostSession=Perdida Sesión [{0}] en ruta [{1}]
 jvmRoute.missingJvmRouteAttribute=¡No se ha configurado atributo de motor jvmRoute!
 jvmRoute.newSessionCookie=Poniendo cookie con id de sesión [{0}] nombre: [{1}] ruta: [{2}] seguro: [{3}] httpOnly: [{4}]
 jvmRoute.noCluster=La válvula JvmRouterBinderValve se encuentra configurada, pero no se usa el clúster. Aún funcionará la tolerancia a fallos, siempre que se esté usando PersistentManager.
-jvmRoute.notFoundManager=No hallado Clúster DeltaManager {0} en {1}
+jvmRoute.notFoundManager=No hallado Clúster DeltaManager [{0}] en [{1}]
 jvmRoute.receiveMessage.sessionIDChanged=Clúster JvmRouteSessionIDBinderListener recibió ID original de sesión [{0}] puesto a nuevo id [{1}] para la ruta de contexto [{2}]
 jvmRoute.run.already=receptor jvmRoute SessionID ya ejecutado
-jvmRoute.set.orignalsessionid=Puesta id Orginal de Sesión en atributo de requerimiento {0} valor: {1}
+jvmRoute.set.orignalsessionid=Puesta id Orginal de Sesión en atributo de requerimiento [{0}] valor: [{1}]
 jvmRoute.skipURLSessionIDs=¡Saltado chequeo de reasignación de ruta jvm, la sessionid viene desde URL!
-jvmRoute.turnoverInfo=Ajustado tiempo de Chequeo a {0} mseg
+jvmRoute.turnoverInfo=Ajustado tiempo de Chequeo a [{0}] mseg
 jvmRoute.valve.started=JvmRouteBinderValve arrancada
 jvmRoute.valve.stopped=JvmRouteBinderValve parada
 
 serializablePrincipal.readPrincipal.cnfe=readPrincipal: No pude volver a crea el usuario Principal
 
-standardSession.notSerializable=No puedo serializar atributo de sesión {0} para sesión {1}
+standardSession.notSerializable=No puedo serializar atributo de sesión [{0}] para sesión [{1}]
 standardSession.removeAttribute.ise=removeAttribute: Sesión ya invalidada
 standardSession.setAttribute.namenull=setAttribute: parámetro de nombre no puede ser nulo
diff --git a/java/org/apache/catalina/ha/tcp/LocalStrings_es.properties b/java/org/apache/catalina/ha/tcp/LocalStrings_es.properties
index 77d79a4..b7e1160 100644
--- a/java/org/apache/catalina/ha/tcp/LocalStrings_es.properties
+++ b/java/org/apache/catalina/ha/tcp/LocalStrings_es.properties
@@ -14,20 +14,20 @@
 # limitations under the License.
 
 ReplicationValve.crossContext.add=añadir contenedor de réplica de sesión de Contexto Cruzado a replicationValve threadlocal
-ReplicationValve.crossContext.registerSession=retistrar id de sesión de Contexto Cruzado={0} desde contexto {1}
+ReplicationValve.crossContext.registerSession=retistrar id de sesión de Contexto Cruzado=[{0}] desde contexto [{1}]
 ReplicationValve.crossContext.remove=quitar contenedor de réplica de sesión de Contexto Cruzado a replicationValve threadlocal
-ReplicationValve.crossContext.sendDelta=enviar delta de sesión de Contexto Cruzado desde contexto {0}.
-ReplicationValve.filter.failure=No puedo compilar filtror={0}
-ReplicationValve.filter.loading=Cargando filtros de requerimiento={0}
-ReplicationValve.invoke.uri=Invocando requerimiento de réplica en {0}
+ReplicationValve.crossContext.sendDelta=enviar delta de sesión de Contexto Cruzado desde contexto [{0}].
+ReplicationValve.filter.failure=No puedo compilar filtror=[{0}]
+ReplicationValve.filter.loading=Cargando filtros de requerimiento=[{0}]
+ReplicationValve.invoke.uri=Invocando requerimiento de réplica en [{0}]
 ReplicationValve.nocluster=No cluster configured for this request.
-ReplicationValve.resetDeltaRequest=Cluster is standalone: reset Session Request Delta at context {0}
+ReplicationValve.resetDeltaRequest=Cluster is standalone: reset Session Request Delta at context [{0}]
 ReplicationValve.send.failure=Unable to perform replication request.
 ReplicationValve.send.invalid.failure=Unable to send session [id={0}] invalid message over cluster.
-ReplicationValve.session.found=Context {0}: Found session {1} but it isn''t a ClusterSession.
-ReplicationValve.session.indicator=Context {0}: Primarity of session {0} in request attribute {1} is {2}.
-ReplicationValve.session.invalid=Context {0}: Requested session {1} is invalid, removed or not replicated at this node.
-ReplicationValve.stats=Average request time= {0} ms for Cluster overhead time={1} ms for {2} requests {3} filter requests {4} send requests {5} cross context requests (Request={6} ms Cluster={7} ms).
+ReplicationValve.session.found=Context [{0}]: Found session [{1}] but it isn''t a ClusterSession.
+ReplicationValve.session.indicator=Context [{0}]: Primarity of session [{0}] in request attribute [{1}] is [{2}].
+ReplicationValve.session.invalid=Context [{0}]: Requested session [{1}] is invalid, removed or not replicated at this node.
+ReplicationValve.stats=Average request time= [{0}] ms for Cluster overhead time=[{1}] ms for [{2}] requests [{3}] filter requests [{4}] send requests [{5}] cross context requests (Request=[{6}] ms Cluster=[{7}] ms).
 
 SimpleTcpCluster.default.addClusterListener=Add Default ClusterListener at cluster {0}
 SimpleTcpCluster.default.addClusterReceiver=Add Default ClusterReceiver at cluster {0}
diff --git a/java/org/apache/catalina/loader/LocalStrings_es.properties b/java/org/apache/catalina/loader/LocalStrings_es.properties
index ed6cec1..844c422 100644
--- a/java/org/apache/catalina/loader/LocalStrings_es.properties
+++ b/java/org/apache/catalina/loader/LocalStrings_es.properties
@@ -49,33 +49,33 @@ webappClassLoader.clearReferencesResourceBundlesCount=Quitadas las referencias d
 webappClassLoader.clearReferencesResourceBundlesFail=No puede limpiar las referencisa de ResourceBundle para la aplicación web [{0}]
 webappClassLoader.clearRmiFail=No pude limpiar el cargador del contexto de clase referenciado desde sun.rmi.transport.Target para la aplicación web [{0}]
 webappClassLoader.clearRmiInfo=No pude hallar la clase sun.rmi.transport.Target para limpiar el cargador de contexto de clase para la aplicación web [{0}]. Esto es lo esperado em máquinas que no son de Sun.
-webappClassLoader.illegalJarPath=Detectada entrada ilegal de JAR con nombre {0}
+webappClassLoader.illegalJarPath=Detectada entrada ilegal de JAR con nombre [{0}]
 webappClassLoader.jdbcRemoveFailed=Ha fallado el desregistro del conductor JDBC para la aplicación web [{0}]
 webappClassLoader.jdbcRemoveStreamError=Excepción al cerrar flujo de entrada durante desregistro de conductor JDBC para apliicación web [{0}]
-webappClassLoader.readError=Error de lectura de recurso: No pude cargar {0}.
+webappClassLoader.readError=Error de lectura de recurso: No pude cargar [{0}].
 webappClassLoader.stopThreadFail=No pude terminar el hilo con nombre [{0}] para la aplicación web [{1}]
 webappClassLoader.stopTimerThreadFail=No pude terminar TimerThread con nombre [{0}] para la aplicación web [{1}]
-webappClassLoader.stopped=Acceso ilegal: esta instancia de aplicación 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ón así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
-webappClassLoader.validationErrorJarPath=no pude validar entrada JAR con nombre {0}
+webappClassLoader.stopped=Acceso ilegal: esta instancia de aplicación 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ón así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
+webappClassLoader.validationErrorJarPath=no pude validar entrada JAR con nombre [{0}]
 webappClassLoader.warnRequestThread=La aplicación web [{0}] aún se encuentra procesando un requerimiento que no ha terminados. Esto tiene todas las papeletas de convertirse en un fallo de memoria. Puedes controlar el tiempo permitido a los requerimientos para acabar mediante el uso del atributo unloadDelay de la implementación estándar de Contexto.
 webappClassLoader.warnThread=La aplicación web [{0}] parece haber arrancado un hilo llamado [{1}] pero no ha podido pararlo. Esto tiene todas las papeletas de convertirse en un fallo de memoria.
 webappClassLoader.warnTimerThread=La aplicación web [{0}] parece haber arrancado un TimerThread con nombre [{1}] vía de la API java.util.Timer, pero no ha podido pararlo. Para prevenir un fallo de memoria, el cronómetro (y el hilo asociado) hasido cancelado a la fuerza.
-webappClassLoader.wrongVersion=(no puedo cargar clase {0})
+webappClassLoader.wrongVersion=(no puedo cargar clase [{0}])
 
 webappLoader.addRepository=Añadiendo repositorio {0}
 webappLoader.alreadyStarted=Ya se ha arrancado el Cargador
 webappLoader.checkInterval=No puedo poner el intervalo de revisión de recarga a {0} segundos
-webappLoader.classDeploy=Despliegue de archivos de clase {0} en {1}
+webappLoader.classDeploy=Despliegue de archivos de clase [{0}] en [{1}]
 webappLoader.copyFailure=No pude copiar los recursos
-webappLoader.deploy=Desplegando repositorios de clase en directorio de trabajo {0}
+webappLoader.deploy=Desplegando repositorios de clase en directorio de trabajo [{0}]
 webappLoader.failModifiedCheck=Modificaciones de pista de error
-webappLoader.jarDeploy=Despliegue del JAR {0} en {1}
+webappLoader.jarDeploy=Despliegue del JAR [{0}] en [{1}]
 webappLoader.mkdirFailure=No pude crear directorio de destino para copiar los recursos
 webappLoader.namingFailure=No pude acceder al recurso {0}
 webappLoader.notContext=No puedo auto-recargar a menos que nuestro Contenedor sea un Contexto
 webappLoader.notReloadabe=Se ha puesto la propiedad Recargable a falsa
 webappLoader.notStarted=Aún no se ha arrancado el Cargador
-webappLoader.reloadable=No puedo poner la propiedad recargable a {0}
+webappLoader.reloadable=No puedo poner la propiedad recargable a [{0}]
 webappLoader.reloading=Se han activado los chequeos de Recarga para este Contexto
 webappLoader.removeRepository=Quitando repositorio {0}
 webappLoader.starting=Arrancando este Cargador
diff --git a/java/org/apache/catalina/manager/LocalStrings_es.properties b/java/org/apache/catalina/manager/LocalStrings_es.properties
index 3e3d595..146cc89 100644
--- a/java/org/apache/catalina/manager/LocalStrings_es.properties
+++ b/java/org/apache/catalina/manager/LocalStrings_es.properties
@@ -16,7 +16,7 @@
 htmlManagerServlet.appsAvailable=Ejecutándose
 htmlManagerServlet.appsExpire=Expirar sesiones
 htmlManagerServlet.appsName=Nombre a Mostrar
-htmlManagerServlet.appsPath=Trayectoria
+htmlManagerServlet.appsPath=Ruta
 htmlManagerServlet.appsReload=Recargar
 htmlManagerServlet.appsSessions=Sesiones
 htmlManagerServlet.appsStart=Arrancar
@@ -25,18 +25,21 @@ htmlManagerServlet.appsTasks=Comandos
 htmlManagerServlet.appsTitle=Aplicaciones
 htmlManagerServlet.appsUndeploy=Replegar
 htmlManagerServlet.appsVersion=Versión
+htmlManagerServlet.connectorStateProcessingTime=Tiempo de procesamiento:
+htmlManagerServlet.connectorStateTableTitleRequest=Solicitud
+htmlManagerServlet.connectorStateTableTitleVHost=VHost
 htmlManagerServlet.deployButton=Desplegar
 htmlManagerServlet.deployConfig=URL de archivo de Configuración XML:
 htmlManagerServlet.deployPath=Trayectoria de Contexto (opcional):
 htmlManagerServlet.deployServer=Desplegar directorio o archivo WAR localizado en servidor
 htmlManagerServlet.deployTitle=Desplegar
 htmlManagerServlet.deployUpload=Archivo WAR a desplegar
-htmlManagerServlet.deployUploadFail=FALLO - Falló Carga de Despliegue, Excepción: {0}
+htmlManagerServlet.deployUploadFail=FALLO - Falló Carga de Despliegue, Excepción: [{0}]
 htmlManagerServlet.deployUploadFile=Seleccione archivo WAR a cargar
-htmlManagerServlet.deployUploadInServerXml=FALLO - El fichero war "{0}" no se puede cargar si se define el contexto en server.xml
+htmlManagerServlet.deployUploadInServerXml=FALLO - El fichero war [{0}] no se puede cargar si se define el contexto en server.xml
 htmlManagerServlet.deployUploadNoFile=FALLO - Falló la carga del fichero, no hay fichero
-htmlManagerServlet.deployUploadNotWar=FALLO - El fichero cargado "{0}" debe de ser un .war
-htmlManagerServlet.deployUploadWarExists=FALLO - El fichero war "{0}" ya existe en el servidor
+htmlManagerServlet.deployUploadNotWar=FALLO - El fichero cargado [{0}] debe de ser un .war
+htmlManagerServlet.deployUploadWarExists=FALLO - El fichero war [{0}] ya existe en el servidor
 htmlManagerServlet.deployWar=URL de WAR o Directorio:
 htmlManagerServlet.diagnosticsLeak=Revisa a ver si una aplicación web ha causado fallos de memoria al parar, recargar o replegarse.
 htmlManagerServlet.diagnosticsLeakButton=Halla fallos de memoria
@@ -44,75 +47,79 @@ htmlManagerServlet.diagnosticsLeakWarning=Este chequeo de diagnóstico disparar
 htmlManagerServlet.diagnosticsTitle=Diagnósticos
 htmlManagerServlet.expire.explain=sin trabajar &ge;
 htmlManagerServlet.expire.unit=minutos
-htmlManagerServlet.findleaksList=Las siguientes aplicaciones web fueron paradas (recargadas, replegadas), pero sus clases de las ejecuciones previas aún se encuentran en memoria, causando así un fallo de memoria (usa un perfilador para confirmarlo):\n
+htmlManagerServlet.findleaksList=Las siguientes aplicaciones web fueron paradas (recargadas, replegadas), pero sus clases de las ejecuciones previas aún se encuentran en memoria, causando así un fallo de memoria (usa un perfilador para confirmarlo):
 htmlManagerServlet.findleaksNone=No parece haber aplicaciones web que hayan disparado un fallo de memoria al ser paradas, recargadas o replegadas.
 htmlManagerServlet.helpHtmlManager=Ayuda HTML de Gestor
 htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
 htmlManagerServlet.helpManager=Ayuda de Gestor
 htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
+htmlManagerServlet.jvmFreeMemory=Memoria disponible:
+htmlManagerServlet.jvmTableTitleMemoryPool=Pool de Memoria
 htmlManagerServlet.list=Listar Aplicaciones
 htmlManagerServlet.manager=Gestor
 htmlManagerServlet.messageLabel=Mensaje:
 htmlManagerServlet.noManager=-
 htmlManagerServlet.noVersion=Ninguno especificado
+htmlManagerServlet.osTotalPageFile=Tamaño total de archivo de página:
 htmlManagerServlet.serverHostname=NombreDeMáquina
 htmlManagerServlet.serverIPAddress=Dirección IP
 htmlManagerServlet.serverJVMVendor=Vendedor JVM
 htmlManagerServlet.serverJVMVersion=Versión JVM
 htmlManagerServlet.serverOSArch=Arquitectura de SO
-htmlManagerServlet.serverOSName=Nombre de SO
+htmlManagerServlet.serverOSName=Nombre del SO
 htmlManagerServlet.serverOSVersion=Versión de SO
 htmlManagerServlet.serverTitle=Información de Servidor
 htmlManagerServlet.serverVersion=Versión de Tomcat
 htmlManagerServlet.title=Gestor de Aplicaciones Web de Tomcat
 
-managerServlet.alreadyContext=FALLO - Ya existe la aplicación en la trayectoria {0}
+managerServlet.alreadyContext=FALLO - Ya existe la aplicación en la trayectoria [{0}]
 managerServlet.alreadyDocBase=FALLO - Directorio {0} ya está siendo usado
 managerServlet.configured=OK - Desplegada aplicación desde archivo de contexto {0}
 managerServlet.deleteFail=FALLO - No pude borrar [{0}]. La presencia continua de este fichero puede causar problemas.
-managerServlet.deployFailed=FALLO - No pude desplegar la aplicación en ruta de contexto {0}
-managerServlet.deployed=OK - Desplegada aplicación en trayectoria de contexto {0}
-managerServlet.deployedButNotStarted=FALLO - Apliación desplegada en la ruta de contexto {0}, pero el contexto no pudo arrancar
-managerServlet.exception=FALLO - Encontrada excepción {0}
+managerServlet.deployFailed=FALLO - No pude desplegar la aplicación en ruta de contexto [{0}]
+managerServlet.deployed=OK - Desplegada aplicación en trayectoria de contexto [{0}]
+managerServlet.deployedButNotStarted=FALLO - Apliación desplegada en la ruta de contexto [{0}], pero el contexto no pudo arrancar
+managerServlet.exception=FALLO - Encontrada excepción [{0}]
 managerServlet.findleaksFail=FALLO - Ha fallado la búsqueda de fallos: La Máquina no es una instancia de StandardHost
 managerServlet.findleaksList=OK - Hallados fallos potenciales de memoria en las siguientes aplicaciones:
 managerServlet.findleaksNone=OK - No se han hallado fallos de memoria
-managerServlet.invalidPath=FALLO - Se ha especificado una trayectoria inválida de contexto {0}
+managerServlet.invalidCommand=Fallo - Se proveiron parámetros inválidos para el comando [{0}]
+managerServlet.invalidPath=FALLO - Se ha especificado una trayectoria inválida de contexto [{0}]
 managerServlet.invalidWar=FALLO - Se ha especificado una URL de aplicación inválida {0}
-managerServlet.listed=OK - Aplicaciones listadas para máquina virtual {0}
+managerServlet.listed=OK - Aplicaciones listadas para máquina virtual [{0}]
 managerServlet.listitem={0}:{1}:{2}:{3}
 managerServlet.mkdirFail=FALLO - No pude crear directorio [{0}]
 managerServlet.noAppBase=FALLO - No puedo identificar aplicación base para trayectoria de contexto {0}
 managerServlet.noCommand=FALLO - No se ha especificado comando
-managerServlet.noContext=FALLO - No existe contexto para trayectoria {0}
+managerServlet.noContext=FALLO - No existe contexto para trayectoria [{0}]
 managerServlet.noDirectory=FALLO - Documento base No-directorio para trayectoria {0}
 managerServlet.noDocBase=FALLO - No puedo replegar documento base para trayectoria {0}
 managerServlet.noGlobal=FALLO - No hay disponibles recursos globales JNDI
-managerServlet.noManager=FALLO - No existe gestor para ruta {0}
+managerServlet.noManager=FALLO - No existe gestor para ruta [{0}]
 managerServlet.noReload=FALLO - Recarga no soportada en WAR desplegado en trayectoria {0}
 managerServlet.noRename=FALLO - No pudeo desplegar WAR cargado para trayectoria {0}
 managerServlet.noRole=FALLO - El usuario no desempeña el papel de {0}
 managerServlet.noSelf=FALLO - El gestor no puede recargarse, replegarse, pararse o replegarse a sí mismo
 managerServlet.noWrapper=El Contenedor no ha llamado a setWrapper() para este servlet
-managerServlet.notDeployed=FALLO - El contexto {0} está definido en server.xml y puede que no esté desplegado
+managerServlet.notDeployed=FALLO - El contexto [{0}] está definido en server.xml y puede que no esté desplegado
 managerServlet.objectNameFail=FALLO - No pude registrar objeto de nombre [{0}] para Gestor de Servlet
-managerServlet.postCommand=FALLO - Intenté usar el comando {0} vía un requerimiento GET pero se necesita POST
-managerServlet.reloaded=OK - Recargada aplicación en trayectoria de contexto {0}
+managerServlet.postCommand=FALLO - Intenté usar el comando [{0}] vía un requerimiento GET pero se necesita POST
+managerServlet.reloaded=OK - Recargada aplicación en trayectoria de contexto [{0}]
 managerServlet.resourcesAll=OK - Listados recursos globales de todos los tipos
-managerServlet.resourcesType=OK - Listados recursos globales de tipo {0}
-managerServlet.saveFail=FAIL - Fallo al guardar la configuración: {0}
+managerServlet.resourcesType=OK - Listados recursos globales de tipo [{0}]
+managerServlet.saveFail=FAIL - Fallo al guardar la configuración: [{0}]
 managerServlet.saved=OK - Configuración de Servidor guardada
-managerServlet.savedContext=OK - Configuración de Contexto {0} guardada
-managerServlet.sessiondefaultmax=Intervalo máximo por defecto de sesión inactiva {0} minutos
-managerServlet.sessions=OK - Información de sesión para aplicación en trayectoria de contexto {0}
-managerServlet.sessiontimeout={0} minutos: {1} sesiones
-managerServlet.sessiontimeout.expired={0} minutos: expired {1} sesiones
-managerServlet.sessiontimeout.unlimited=unlimited minutos: {0} sesiones
-managerServlet.startFailed=FALLO - No se pudo arrancar la aplicación en trayectoria de contexto {0}
-managerServlet.started=OK - Arrancada aplicación en trayectoria de contexto {0}
-managerServlet.stopped=OK - Parada aplicación en trayectoria de contexto {0}
-managerServlet.undeployed=OK - Replegada aplicación en trayectoria de contexto {0}
-managerServlet.unknownCommand=FALLO - Comando desconocido {0}
+managerServlet.savedContext=OK - Configuración de Contexto [{0}] guardada
+managerServlet.sessiondefaultmax=Intervalo máximo por defecto de sesión inactiva [{0}] minutos
+managerServlet.sessions=OK - Información de sesión para aplicación en trayectoria de contexto [{0}]
+managerServlet.sessiontimeout=[{0}] minutos: [{1}] sesiones
+managerServlet.sessiontimeout.expired=[{0}] minutos: expired [{1}] sesiones
+managerServlet.sessiontimeout.unlimited=unlimited minutos: [{0}] sesiones
+managerServlet.startFailed=FALLO - No se pudo arrancar la aplicación en trayectoria de contexto [{0}]
+managerServlet.started=OK - Arrancada aplicación en trayectoria de contexto [{0}]
+managerServlet.stopped=OK - Parada aplicación en trayectoria de contexto [{0}]
+managerServlet.undeployed=OK - Replegada aplicación en trayectoria de contexto [{0}]
+managerServlet.unknownCommand=FALLO - Comando desconocido [{0}]
 managerServlet.userDatabaseError=FALLO - No puedo resolver referencia de base de datos de usuario
 managerServlet.userDatabaseMissing=FALLO - No se encuentra disponible base de datos de usuario
 
diff --git a/java/org/apache/catalina/manager/host/LocalStrings_es.properties b/java/org/apache/catalina/manager/host/LocalStrings_es.properties
index 4416338..e1d2c3c 100644
--- a/java/org/apache/catalina/manager/host/LocalStrings_es.properties
+++ b/java/org/apache/catalina/manager/host/LocalStrings_es.properties
@@ -14,36 +14,36 @@
 # limitations under the License.
 
 hostManagerServlet.add=añadir: Añadiendo máquina [{0}]
-hostManagerServlet.addFailed=FALLO - No pude añadir máquina {0}
+hostManagerServlet.addFailed=FALLO - No pude añadir máquina [{0}]
 hostManagerServlet.addSuccess=OK - Máquina añadida [{0}]
-hostManagerServlet.alreadyHost=FALLO - Ya existe máquina con nombre de máquina {0}
+hostManagerServlet.alreadyHost=FALLO - Ya existe máquina con nombre de máquina [{0}]
 hostManagerServlet.alreadyStarted=FALLO - La máqiuina [{0}] ya ha arrancado
 hostManagerServlet.alreadyStopped=FALLO - La máquina [{0}] ya se ha parado
 hostManagerServlet.appBaseCreateFail=FALLO - No pude crear appBase [{0}] para la máquina [{1}]
-hostManagerServlet.cannotRemoveOwnHost=FALLO - No puedo quitar máquina propia {0}
-hostManagerServlet.cannotStartOwnHost=FALLO - No puedo empezar máquina propia {0}
-hostManagerServlet.cannotStopOwnHost=FALLO - No puedo para máquina propia {0}
+hostManagerServlet.cannotRemoveOwnHost=FALLO - No puedo quitar máquina propia [{0}]
+hostManagerServlet.cannotStartOwnHost=FALLO - No puedo empezar máquina propia [{0}]
+hostManagerServlet.cannotStopOwnHost=FALLO - No puedo para máquina propia [{0}]
 hostManagerServlet.configBaseCreateFail=FALLO - No pude identificar configBase para la máquina [{0}]
-hostManagerServlet.exception=FALLO - Encontrada excepción {0}
-hostManagerServlet.invalidHostName=FALLO - Se ha especificado un nombre inválido de máquina {0}
+hostManagerServlet.exception=FALLO - Encontrada excepción [{0}]
+hostManagerServlet.invalidHostName=FALLO - Se ha especificado un nombre inválido de máquina [{0}]
 hostManagerServlet.list=listar: Listando máquinas para motor [{0}]
 hostManagerServlet.listed=OK - Máquinas listadas
-hostManagerServlet.listitem={0}:{1}
+hostManagerServlet.listitem=[{0}]:[{1}]
 hostManagerServlet.managerXml=FALLO - no pude instalar manager.xml
 hostManagerServlet.noCommand=FALLO - No se ha especificado comando
-hostManagerServlet.noHost=FALLO - El nombre de máquina {0} no existe
+hostManagerServlet.noHost=FALLO - El nombre de máquina [{0}] no existe
 hostManagerServlet.noWrapper=El contenedor no ha llamado a setWrapper() para este servlet
-hostManagerServlet.postCommand=FALLO - Intenté usar el comando {0} vía un requerimiento GET pero es necesario POST
+hostManagerServlet.postCommand=FALLO - Intenté usar el comando [{0}] vía un requerimiento GET pero es necesario POST
 hostManagerServlet.remove=quitar: Quitando máquina [{0}]
-hostManagerServlet.removeFailed=FALLO - No pude quitar máquina {0}
+hostManagerServlet.removeFailed=FALLO - No pude quitar máquina [{0}]
 hostManagerServlet.removeSuccess=OK - Máquina removida [{0}]
 hostManagerServlet.start=arrancar: Arrancando máquina con nombre [{0}]
-hostManagerServlet.startFailed=FALLO - No pude arrancar máquina {0}
-hostManagerServlet.started=OK - Máquina {0} arrancada
+hostManagerServlet.startFailed=FALLO - No pude arrancar máquina [{0}]
+hostManagerServlet.started=OK - Máquina [{0}] arrancada
 hostManagerServlet.stop=parar: Parando máquina con nombre [{0}]
-hostManagerServlet.stopFailed=FALLO - No pude parar máquina {0}
-hostManagerServlet.stopped=OK - Máquina {0} parada
-hostManagerServlet.unknownCommand=FALLO - Comando desconocido {0}
+hostManagerServlet.stopFailed=FALLO - No pude parar máquina [{0}]
+hostManagerServlet.stopped=OK - Máquina [{0}] parada
+hostManagerServlet.unknownCommand=FALLO - Comando desconocido [{0}]
 
 htmlHostManagerServlet.addAliases=Aliases:
 htmlHostManagerServlet.addAppBase=App base:
@@ -51,7 +51,7 @@ htmlHostManagerServlet.addAutoDeploy=AutoDeploy
 htmlHostManagerServlet.addButton=Añadir
 htmlHostManagerServlet.addDeployOnStartup=DeployOnStartup
 htmlHostManagerServlet.addDeployXML=DeployXML
-htmlHostManagerServlet.addHost=Máquina
+htmlHostManagerServlet.addHost=Maquina
 htmlHostManagerServlet.addManager=App de Gestor
 htmlHostManagerServlet.addName=Nombre:
 htmlHostManagerServlet.addTitle=Añadir Máquina Virtual
@@ -72,7 +72,7 @@ htmlHostManagerServlet.manager=Gestor de Máquina
 htmlHostManagerServlet.messageLabel=Mensaje:
 htmlHostManagerServlet.serverJVMVendor=Vendedor JVM
 htmlHostManagerServlet.serverJVMVersion=Versión de JVM
-htmlHostManagerServlet.serverOSArch=Arquitectura de SO
+htmlHostManagerServlet.serverOSArch=Arquitectura del SO
 htmlHostManagerServlet.serverOSName=Nombre de SO
 htmlHostManagerServlet.serverOSVersion=Versión de SO
 htmlHostManagerServlet.serverTitle=Información de Servidor
diff --git a/java/org/apache/coyote/LocalStrings_es.properties b/java/org/apache/catalina/mbeans/LocalStrings_es.properties
similarity index 86%
copy from java/org/apache/coyote/LocalStrings_es.properties
copy to java/org/apache/catalina/mbeans/LocalStrings_es.properties
index 2cff96d..b09f904 100644
--- a/java/org/apache/coyote/LocalStrings_es.properties
+++ b/java/org/apache/catalina/mbeans/LocalStrings_es.properties
@@ -13,4 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-abstractConnectionHandler.error=Error leyendo requerimiento, ignorado
+jmxRemoteLifecycleListener.invalidURL=LA URL del servicio JMX solicitada por el servidor [{0}], [{1}], fue no válida
diff --git a/java/org/apache/catalina/realm/LocalStrings_es.properties b/java/org/apache/catalina/realm/LocalStrings_es.properties
index 6720356..b939d08 100644
--- a/java/org/apache/catalina/realm/LocalStrings_es.properties
+++ b/java/org/apache/catalina/realm/LocalStrings_es.properties
@@ -13,91 +13,92 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-combinedRealm.addRealm=Añadir reino "{0}", totalizando "{1}" reinos
-combinedRealm.authFail=No pude autenticar al usuario "{0}" con el reino "{1}"
-combinedRealm.authStart=Intentando autentica al usuario "{0}" con el reino "{1}"
-combinedRealm.authSuccess=Usuario autenticado "{0}" con reino "{1}"
+combinedRealm.addRealm=Añadir reino [{0}], totalizando [{1}] reinos
+combinedRealm.authFail=No pude autenticar al usuario [{0}] con el reino [{1}]
+combinedRealm.authStart=Intentando autentica al usuario [{0}] con el reino [{1}]
+combinedRealm.authSuccess=Usuario autenticado [{0}] con reino [{1}]
 combinedRealm.getName=No se debería de llamar nunca al método getName()
 combinedRealm.getPassword=No se debería de llamar nunca al método getPassword()
 combinedRealm.getPrincipal=No se debería de llamar nunca al método getPrincipal()
-combinedRealm.realmStartFail=No pude arrancar reino "{0}"
+combinedRealm.realmStartFail=No pude arrancar reino [{0}]
 combinedRealm.unexpectedMethod=Una llamada inesperada se realizó a un método del reino combinado
 
-dataSourceRealm.authenticateFailure=Nombre de usuario {0} NO autenticado con éxito
-dataSourceRealm.authenticateSuccess=Nombre de usuario {0} autenticado con éxito
+dataSourceRealm.authenticateFailure=Nombre de usuario [{0}] NO autenticado con éxito
+dataSourceRealm.authenticateSuccess=Nombre de usuario [{0}] autenticado con éxito
 dataSourceRealm.close=Excepción cerrando conexión a base de datos
 dataSourceRealm.exception=Excepción realizando autenticación
-dataSourceRealm.getPassword.exception=Excepción recuperando contraseña para "{0}"
-dataSourceRealm.getRoles.exception=Excepción recuperando papeles para "{0}"
+dataSourceRealm.getPassword.exception=Excepción recuperando contraseña para [{0}]
+dataSourceRealm.getRoles.exception=Excepción recuperando papeles para [{0}]
 dataSourceRealm.open=Excepción abriendo conexión a base de datos
 
 jaasCallback.digestpassword=Resumida contraseña "{0}" como "{1}"
 jaasCallback.password=Devuelta contraseña "{0}"
-jaasCallback.username=Devuelto nombre de usuario "{0}"
+jaasCallback.username=Devuelto nombre de usuario [{0}]
 
-jaasRealm.accountExpired=El usuario {0} NO ha sido autentificado porque ha expirado su cuenta
-jaasRealm.authenticateFailure=Nombre de usuario "{0}" NO autenticado con éxito
-jaasRealm.authenticateSuccess=Nombre de usuario "{0}" autenticado con éxito como Principal "{1}" -- También se ha creado el Asunto
-jaasRealm.beginLogin=JAASRealm login requerido para nombre de usuario "{0}" usando LoginContext para aplicación "{1}"
+jaasRealm.accountExpired=El usuario [{0}] NO ha sido autentificado porque ha expirado su cuenta
+jaasRealm.authenticateFailure=Nombre de usuario [{0}] NO autenticado con éxito
+jaasRealm.authenticateSuccess=Nombre de usuario [{0}] autenticado con éxito como Principal [{1}] -- También se ha creado el Asunto
+jaasRealm.beginLogin=JAASRealm login requerido para nombre de usuario [{0}] usando LoginContext para aplicación [{1}]
 jaasRealm.cachePrincipal=Usuario Principal "{0}" en caché; tiene {1} papel de Principal
-jaasRealm.checkPrincipal=Revisando Principal "{0}" [{1}]
-jaasRealm.credentialExpired=El usuario {0} NO ha sido autentificado porque ha expirado su credencial
-jaasRealm.failedLogin=El usuario {0} NO ha sido autentificado porque ha fallado el login
+jaasRealm.checkPrincipal=Revisando Principal [{0}] [{1}]
+jaasRealm.credentialExpired=El usuario [{0}] NO ha sido autentificado porque ha expirado su credencial
+jaasRealm.failedLogin=El usuario [{0}] NO ha sido autentificado porque ha fallado el login
 jaasRealm.isInRole.match=Hallado papel de Principal coincidente.
 jaasRealm.isInRole.noMatch=NO hallado papel de Principal coincidente.
 jaasRealm.isInRole.noPrincipalOrRole=No se han hallado papeles de Principal. El usuario Principal o el Asunto es nulo o el usuario Principal no está en caché
 jaasRealm.isInRole.possessesRole=El Usuario Principal tiene un papele de Principal llamado "{0}"
 jaasRealm.isInRole.principalCached=El Usuario Principal tiene {0} papeles de Principal
 jaasRealm.isInRole.start=Revisando si el usuario Principal "{0}" tiene el papel "{1}"
-jaasRealm.loginContextCreated=JAAS LoginContext creado para nombre de usuario "{0}"
-jaasRealm.loginException=Excepción de Login autenticando nombre de usuario {0}
-jaasRealm.rolePrincipalAdd=Añadiend papel Principal "{0}" a los papeles de este usuario Principal
+jaasRealm.loginContextCreated=JAAS LoginContext creado para nombre de usuario [{0}]
+jaasRealm.loginException=Excepción de Login autenticando nombre de usuario [{0}]
+jaasRealm.rolePrincipalAdd=Añadiend papel Principal [{0}] a los papeles de este usuario Principal
 jaasRealm.rolePrincipalFailure=No se han hallado papeles de Principal válidos.
 jaasRealm.rolePrincipalSuccess=hallado {0} papeles de Principal
 jaasRealm.unexpectedError=Error inesperado
 jaasRealm.userPrincipalFailure=No se ha hallado usuario Principal
-jaasRealm.userPrincipalSuccess=El Principal "{0}" es una clase válida de usuario. La vamos a usar como usuario Principal.
+jaasRealm.userPrincipalSuccess=El Principal [{0}] es una clase válida de usuario. La vamos a usar como usuario Principal.
 
-jdbcRealm.authenticateFailure=El usuario {0} NO ha sido autentificado correctamente
-jdbcRealm.authenticateSuccess=El usuario {0} ha sido autentificado correctamente
+jdbcRealm.authenticateFailure=El usuario [{0}] NO ha sido autentificado correctamente
+jdbcRealm.authenticateSuccess=El usuario [{0}] ha sido autentificado correctamente
 jdbcRealm.close=Excepción al cerrar la conexión a la base de datos
 jdbcRealm.exception=Excepción al realizar la autentificación
 jdbcRealm.getPassword.exception=Excepción recuperando contraseña para "{0}"
 jdbcRealm.getRoles.exception=Excepción recuperando papeles para "{0}"
 jdbcRealm.open=Excepción abriendo la conexión a la base de datos
-jdbcRealm.open.invalidurl=El conductor "{0}" no soporta la url "{1}"
+jdbcRealm.open.invalidurl=El conductor [{0}] no soporta la url [{1}]
 
-jndiRealm.authenticateFailure=Autentificación fallida para el usuario {0}
-jndiRealm.authenticateSuccess=Autentificación correcta para el usuario {0}
+jndiRealm.authenticateFailure=Autentificación fallida para el usuario [{0}]
+jndiRealm.authenticateSuccess=Autentificación correcta para el usuario [{0}]
 jndiRealm.close=Excepción al cerrar la conexión al servidor de directorio
 jndiRealm.exception=Excepción al realizar la autentificación
 jndiRealm.open=Excepción al abrir la conexión al servidor de directorio
 
-lockOutRealm.authLockedUser=Se ha intentado autentica al usuario bloqueado "{0}"
-lockOutRealm.removeWarning=Se ha quitado al usuario "{0}" de la caché de usuarios fallidos tras {1} secgundos para mantener la medida de caché dentro de los límites
+lockOutRealm.authLockedUser=Se ha intentado autenticar al usuario bloqueado [{0}]
+lockOutRealm.removeWarning=Se ha quitado al usuario [{0}] de la caché de usuarios fallidos tras [{1}] secgundos para mantener la medida de caché dentro de los límites
 
-memoryRealm.authenticateFailure=Autentificación fallida para el usuario {0}
-memoryRealm.authenticateSuccess=Autentificación correcta para el usuario {0}
-memoryRealm.loadExist=El fichero de usuarios {0} no ha podido ser leído
-memoryRealm.loadPath=Cargando los usuarios desde el fichero {0}
+memoryRealm.authenticateFailure=Autentificación fallida para el usuario [{0}]
+memoryRealm.authenticateSuccess=Autentificación correcta para el usuario [{0}]
+memoryRealm.loadExist=El fichero de usuarios [{0}] no ha podido ser leído
+memoryRealm.loadPath=Cargando los usuarios desde el fichero [{0}]
 memoryRealm.readXml=Excepción mientras se leía el fichero de usuarios
 memoryRealm.xmlFeatureEncoding=Excepción al configurar resumidor para permitir nombres con codificación java en ficheros XML. Sóllo se soportan nombres con codificación IANA.
 
-realmBase.algorithm=El algoritmo resumen (digest) {0} es inválido
+realmBase.algorithm=El algoritmo resumen (digest) [{0}] es inválido
 realmBase.alreadyStarted=Este dominio ya ha sido inicializado
-realmBase.authenticateFailure=Nombre de usuario {0} NO autenticado con éxito
-realmBase.authenticateSuccess=Nombre de usuario {0} autenticado con éxito
+realmBase.authenticateFailure=Nombre de usuario [{0}] NO autenticado con éxito
+realmBase.authenticateSuccess=Nombre de usuario [{0}] autenticado con éxito
+realmBase.createUsernameRetriever.ClassCastException=La clase [{0}] no es una X509UsernameRetriever.
 realmBase.delegatedCredentialFail=No pude obtener credenciales de delegado para el usuario [{0}]
 realmBase.digest=Error procesando las credenciales del usuario
 realmBase.forbidden=El acceso al recurso pedido ha sido denegado
 realmBase.gssNameFail=No pude extraer el nombre desde el GSSContext establecido
-realmBase.hasRoleFailure=El usuario {0} NO desempeña el papel de {1}
-realmBase.hasRoleSuccess=El usuario {0} desempeña el papel de {1}
+realmBase.hasRoleFailure=El usuario [{0}] NO desempeña el papel de [{1}]
+realmBase.hasRoleSuccess=El usuario [{0}] desempeña el papel de [{1}]
 realmBase.notAuthenticated=Error de Configuración: No se pueden realizar funciones de control de acceso sin un principal autentificado
 realmBase.notStarted=Este dominio aún no ha sido inicializado
 
 userDatabaseRealm.authenticateError=Error de configuración de Login autenticando nombre de usuario {0}
-userDatabaseRealm.lookup=Excepción buscando en Base de datos de Usuario mediante la clave {0}
-userDatabaseRealm.noDatabase=No se ha hallado componente de Base de datos de Usuario mediante la clave {0}
+userDatabaseRealm.lookup=Excepción buscando en Base de datos de Usuario mediante la clave [{0}]
+userDatabaseRealm.noDatabase=No se ha hallado componente de Base de datos de Usuario mediante la clave [{0}]
 userDatabaseRealm.noEngine=No se ha hallado componente de Motor en jerarquía de contenedor
 userDatabaseRealm.noGlobal=No se ha hallado contexto de recursos globales JNDI
diff --git a/java/org/apache/catalina/session/LocalStrings_es.properties b/java/org/apache/catalina/session/LocalStrings_es.properties
index 1ab4e14..dbb680b 100644
--- a/java/org/apache/catalina/session/LocalStrings_es.properties
+++ b/java/org/apache/catalina/session/LocalStrings_es.properties
@@ -13,49 +13,53 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-JDBCStore.SQLException=Error SQL {0}
-JDBCStore.checkConnectionClassNotFoundException=No se ha hallado la clase del manejador (driver) JDBC {0}
+JDBCStore.SQLException=Error SQL [{0}]
+JDBCStore.checkConnectionClassNotFoundException=No se ha hallado la clase del manejador (driver) JDBC [{0}]
 JDBCStore.checkConnectionDBClosed=La conexióna a base de datos es nula o está cerrada. Intentando reabrirla.
 JDBCStore.checkConnectionDBReOpenFail=Falló la reapertura de la base de datos. Puede que la base de datos esté caída.
-JDBCStore.checkConnectionSQLException=Ha tenido lugar una excepción SQL {0}
-JDBCStore.close=Excepción cerrando conexión a base de datos {0}
-JDBCStore.loading=Cargando Sesión {0} desde base de datos {1}
-JDBCStore.removing=Quitando Sesión {0} en base de datos {1}
-JDBCStore.saving=Salvando Sesión {0} en base de datos {1}
+JDBCStore.checkConnectionSQLException=Ha tenido lugar una excepción SQL [{0}]
+JDBCStore.close=Excepción cerrando conexión a base de datos [{0}]
+JDBCStore.loading=Cargando Sesión [{0}] desde base de datos [{1}]
+JDBCStore.missingDataSourceName=No se proporcionó un nombre JNDI válido
+JDBCStore.removing=Quitando Sesión [{0}] en base de datos [{1}]
+JDBCStore.saving=Salvando Sesión [{0}] en base de datos [{1}]
 
 applicationSession.session.ise=estado inválido de sesión
 applicationSession.value.iae=valor nulo
 
-fileStore.loading=Cargando Sesión {0} desde archivo {1}
-fileStore.removing=Quitando Sesión {0} en archivo {1}
-fileStore.saving=Salvando Sesión {0} en archivo {1}
+fileStore.loading=Cargando Sesión [{0}] desde archivo [{1}]
+fileStore.removing=Quitando Sesión [{0}] en archivo [{1}]
+fileStore.saving=Salvando Sesión [{0}] en archivo [{1}]
 
 managerBase.createSession.ise=createSession: Demasiadas sesiones activas
-managerBase.sessionTimeout=Valor inválido de Tiempo Agotado de sesión {0}
+managerBase.sessionTimeout=Valor inválido de Tiempo Agotado de sesión [{0}]
+managerBase.setContextNotNew=Es ilegal llamar a setContext() para cambiar el Contexto associado con un Manejador si el Manejador no esta en el estado NEW.
 
 persistentManager.activeSession=La sesión {0} ha estado ociosa durante {1} segundos
 persistentManager.backupException=Ha tenido lugar una excepción al respaldar la Sesión {0}: {1}
-persistentManager.backupMaxIdle=Respaldando sesión {0} a Almacén, ociosa durante {1} segundos
-persistentManager.deserializeError=Error des-serializando Sesión {0}: {1}
+persistentManager.backupMaxIdle=Respaldando sesión [{0}] a Almacén, ociosa durante [{1}] segundos
+persistentManager.deserializeError=Error des-serializando Sesión [{0}]: [{1}]
 persistentManager.expiring=Expirando {0} sesiones antes de salvarlas
-persistentManager.loading=Cargando {0} sesiones persistidas
+persistentManager.loading=Cargando [{0}] sesiones persistidas
 persistentManager.processSwaps=Mirando qué sesiones intercambiar a fuera, {0} sesiones activas en memoria
-persistentManager.serializeError=Error serializando Sesión {0}: {1}
-persistentManager.swapIn=Intercambiando sesión {0} a dentro desde Almacén
-persistentManager.swapMaxIdle=Intercambiando sesión {0} a fuera a Almacén, ociosa durante {1} segundos
-persistentManager.swapTooManyActive=Intercambiando sesión {0} a fuera, ociosa durante {1} segundos: Demasiadas sesiones activas
-persistentManager.tooManyActive=Demasiadas sesiones activas, {0}, buscando sesiones ociosas para intercambiar
-persistentManager.unloading=Salvando {0} sesiones persistidas
+persistentManager.serializeError=Error serializando Sesión [{0}]: [{1}]
+persistentManager.storeKeysException=Imposible determinar la lista de IDs de sesiones en la tienda de sesiones, asumiendo que la tienda esta vacia
+persistentManager.storeSizeException=No se puede determinar el numero de sesiones en el almacenamiento de sesiones, asumiendo que el almacenamiento esta vacío
+persistentManager.swapIn=Intercambiando sesión [{0}] a dentro desde Almacén
+persistentManager.swapMaxIdle=Intercambiando sesión [{0}] a fuera a Almacén, ociosa durante [{1}] segundos
+persistentManager.swapTooManyActive=Intercambiando sesión [{0}] a fuera, ociosa durante [{1}] segundos: Demasiadas sesiones activas
+persistentManager.tooManyActive=Demasiadas sesiones activas, [{0}], buscando sesiones ociosas para intercambiar
+persistentManager.unloading=Salvando [{0}] sesiones persistidas
 
 serverSession.value.iae=valor nulo
 
 standardManager.expireException=processsExpire: Excepción durante la expiración de sesión
-standardManager.loading=Cargando sesiones persistidas desde {0}
+standardManager.loading=Cargando sesiones persistidas desde [{0}]
 standardManager.loading.cnfe=ClassNotFoundException al cargar sesiones persistidas: {0}
 standardManager.loading.ioe=IOException al cargar sesiones persistidas: {0}
 standardManager.managerLoad=Excepción cargando sesiones desde almacenamiento persistente
 standardManager.managerUnload=Excepción descargando sesiones a almacenamiento persistente
-standardManager.unloading=Salvando sesiones persistidas a {0}
+standardManager.unloading=Salvando sesiones persistidas a [{0}]
 standardManager.unloading.ioe=IOException al salvar sesiones persistidas: {0}
 
 standardSession.attributeEvent=El oyente de eventos de atributo de Sesión lanzó una excepción
@@ -70,10 +74,10 @@ standardSession.getThisAccessedTime.ise=getThisAccessedTime: La Sesión ya ha si
 standardSession.getValueNames.ise=getValueNames: La Sesión ya ha sido invalidada
 standardSession.invalidate.ise=invalidate: La Sesión ya ha sido invalidada
 standardSession.isNew.ise=isNew: La Sesión ya ha sido invalidada
-standardSession.notSerializable=No puedo serializar atributo de sesión {0} para sesión {1}
+standardSession.notSerializable=No puedo serializar atributo de sesión [{0}] para sesión [{1}]
 standardSession.removeAttribute.ise=removeAttribute: La Sesión ya ha sido invalidada
 standardSession.sessionCreated=Creada Sesión id = {0}
 standardSession.sessionEvent=El oyente de evento de Sesión lanzó una execpción
-standardSession.setAttribute.iae=setAttribute: Atributo {0} no serializable
+standardSession.setAttribute.iae=setAttribute: Atributo [{0}] no serializable
 standardSession.setAttribute.ise=setAttribute: La Sesión ya ha sido invalidada
 standardSession.setAttribute.namenull=setAttribute: el nuevo parámetro no puede ser nulo
diff --git a/java/org/apache/catalina/startup/LocalStrings_es.properties b/java/org/apache/catalina/startup/LocalStrings_es.properties
index d712a0a..769eb3c 100644
--- a/java/org/apache/catalina/startup/LocalStrings_es.properties
+++ b/java/org/apache/catalina/startup/LocalStrings_es.properties
@@ -14,32 +14,33 @@
 # limitations under the License.
 
 catalina.configFail=No pude cargar la configuración del servidor desde [{0}]
+catalina.serverStartFail=Tomcat no puede iniciar porque el componente Server requerido fallo al iniciar.
 catalina.shutdownHookFail=El gancho de apagado ha experimentado un error al intentar para el servidor
 catalina.stopServer=No se ha configurado puerto de apagado. Apagando el servidor a través de señal de SO. Servidor no apagado.
 
 contectConfig.baseError=No pude determinar $CATALINA_BASE
 
-contextConfig.altDDNotFound=fichero alt-dd {0} no hallado
+contextConfig.altDDNotFound=fichero alt-dd [{0}] no hallado
 contextConfig.applicationMissing=Falta el archivo web.xml de la aplicación. Utilizando los parámetros por defecto
-contextConfig.applicationParse=Error de evaluación (parse) en el archivo web.xml de la aplicación a {0}
-contextConfig.applicationPosition=Se ha producido en la línea {0} columna {1}
-contextConfig.applicationStart=Analizando fichero de aplicación web.xml en {0}
+contextConfig.applicationParse=Error de evaluación (parse) en el archivo web.xml de la aplicación a [{0}]
+contextConfig.applicationPosition=Se ha producido en la línea [{0}] columna [{1}]
+contextConfig.applicationStart=Analizando fichero de aplicación web.xml en [{0}]
 contextConfig.applicationUrl=No pude determinar la URL para la aplicación web.xml
-contextConfig.authenticatorConfigured=Configuración de un autentificador (authenticator) para el método {0}
-contextConfig.authenticatorInstantiate=Imposible de instanciar un autenticador (authenticator) para la clase {0}
-contextConfig.authenticatorMissing=Imposible de configurar un autentificador (authenticator) para el método {0}
+contextConfig.authenticatorConfigured=Configuración de un autentificador (authenticator) para el método [{0}]
+contextConfig.authenticatorInstantiate=Imposible de instanciar un autenticador (authenticator) para la clase [{0}]
+contextConfig.authenticatorMissing=Imposible de configurar un autentificador (authenticator) para el método [{0}]
 contextConfig.authenticatorResources=Imposible de cargar la lista de correspondencia de autenticadores (authenticators)
 contextConfig.badUrl=No pude procesar descriptor de contextor [{0}]
-contextConfig.cce=El objeto de los datos de evento de ciclo de vida (Lifecycle event data object) {0} no es un Contexto
-contextConfig.contextClose=Error cerrando context.xml: {0}
-contextConfig.contextMissing=Falta context.xml: {0}
-contextConfig.contextParse=Error de análisis en context.xml: {0}
-contextConfig.defaultError=Error al procesar web.xml por defecto con nombre {0} en {1}
+contextConfig.cce=El objeto de los datos de evento de ciclo de vida (Lifecycle event data object) [{0}] no es un Contexto
+contextConfig.contextClose=Error cerrando context.xml: [{0}]
+contextConfig.contextMissing=Falta context.xml: [{0}]
+contextConfig.contextParse=Error de análisis en context.xml: [{0}]
+contextConfig.defaultError=Error al procesar web.xml por defecto con nombre [{0}] en [{1}]
 contextConfig.defaultMissing=No se ha hallado web.xml global
-contextConfig.defaultPosition=Se ha producido en la línea {0} columna {1}
+contextConfig.defaultPosition=Se ha producido en la línea [{0}] columna [{1}]
 contextConfig.destroy=ContextConfig: Destruyendo
 contextConfig.fileUrl=No puedo crear un objeto Fichero desde la URL [{0}]
-contextConfig.fixDocBase=Excepción arreglando docBase: {0}
+contextConfig.fixDocBase=Excepción arreglando docBase: [{0}]
 contextConfig.init=ContextConfig: Inicializando
 contextConfig.inputStreamFile=No puedo procesar el fichero [{0}] para las anotaciones
 contextConfig.inputStreamJar=No puedo procesar la entrada de Jar [{0}] desde el Jar [{1}] para las anotaciones
@@ -50,49 +51,53 @@ contextConfig.jar=No puedo crear el recurso [{0}] para las anotaciones
 contextConfig.jarUrl=La conexión creada para la URL [{0}] no era una JarUrlConnection
 contextConfig.jndiUrl=No puedo procesar la URL JNDI [{0}] para las anotaciones
 contextConfig.jndiUrlNotDirContextConn=La conexión creada para la URL [{0}] no era una DirContextURLConnection
-contextConfig.jspFile.error=El archivo JSP {0} debe de comenzar con ''/''
-contextConfig.jspFile.warning=AVISO: El archivo JSP {0} debe de comenzar con ''/'' en Servlet 2.4
+contextConfig.jspFile.error=El archivo JSP [{0}] debe de comenzar con ''/''
+contextConfig.jspFile.warning=AVISO: El archivo JSP [{0}] debe de comenzar con ''/'' en Servlet 2.4
 contextConfig.missingRealm=Algún reino (realm) no ha sido configurado para realizar la autenticación
+contextConfig.processAnnotationsDir.debug=Escaneando el directorio por archivos de clase con anotaciones [{0}]\n
 contextConfig.resourceJarFail=Hallado JAR fallido a los procesos en URL [{0}] para recursos estáticos a ser incluidos en contexto con nombre [{0}]
-contextConfig.role.auth=El nombre de papel de seguridad {0} es usado en un <auth-constraint> sin haber sido definido en <security-role>
-contextConfig.role.link=El nombre de papel de seguridad {0} es usado en un <role-link> sin haber sido definido en <security-role>
-contextConfig.role.runas=El nombre de papel de seguridad {0} es usado en un <run-as> sin haber sido definido en <security-role>
+contextConfig.role.auth=El nombre de papel de seguridad [{0}] es usado en un <auth-constraint> sin haber sido definido en <security-role>
+contextConfig.role.link=El nombre de papel de seguridad [{0}] es usado en un <role-link> sin haber sido definido en <security-role>
+contextConfig.role.runas=El nombre de papel de seguridad [{0}] es usado en un <run-as> sin haber sido definido en <security-role>
 contextConfig.servletContainerInitializerFail=Hallado JAR fallido a proceso en URL [{0}] para ServletContainerInitializers para el contexto con nombre [{1}]
 contextConfig.start="ContextConfig": Procesando "START"
 contextConfig.stop="ContextConfig": Procesando "STOP"
 contextConfig.unavailable=Esta aplicación está marcada como no disponible debido a los errores precedentes
 contextConfig.unknownUrlProtocol=El protocolo de URL [{0}] no fue reconocido durante el proceso de anotaciones. Se ignoró la URL [{1}].
-contextConfig.urlPatternValue=Ambis valores de urlPatterns y atributo fuerno puestos para anotación de {0} de la clase [{1}]
+contextConfig.urlPatternValue=Ambis valores de urlPatterns y atributo fuerno puestos para anotación de [{0}] de la clase [{1}]
 contextConfig.webinfClassesUrl=No pude determinar la URL para WEB-INF/classes
-contextConfig.xmlSettings=El contexto [{0}] analizará los ficheros web.xml y web-fragment.xml con validación:{1} y namespaceAware:{2}
+contextConfig.xmlSettings=El contexto [{0}] analizará los ficheros web.xml y web-fragment.xml con validación:[{1}] y namespaceAware:[{2}]
 
 embedded.authenticatorNotInstanceOfValve=El Autenticado especificado no es un Válvula
 embedded.noEngines=Algún motor (engine) no ha sido aún definido
-embedded.notmp=No puedo hallar carpeta temporal especificada en {0}
+embedded.notmp=No puedo hallar carpeta temporal especificada en [{0}]
 
-engineConfig.cce=El objeto de los datos de evento de ciclo de vida (Lifecycle event data object) {0} no es un motor (engine)
+engineConfig.cce=El objeto de los datos de evento de ciclo de vida (Lifecycle event data object) [{0}] no es un motor (engine)
 engineConfig.start="EngineConfig": Procesando "START"
 engineConfig.stop="EngineConfig": Procesando "STOP"
 
-expandWar.copy=Error copiando {0} a {1}
+expandWar.copy=Error copiando [{0}] a [{1}]
+expandWar.createFailed=No se pudo crear el directorio [{0}]
 expandWar.deleteFailed=[{0}] no pudo ser completamente borrado. La presencia de los ficheros restantes puede causar problemas
 expandWar.illegalPath=The archive [{0}] is malformed and will be ignored: an entry contains an illegal path [{1}] which was not expanded to [{2}] since that is outside of the defined docBase [{3}]
 
 hostConfig.canonicalizing=Error al borrar redespliegue de recursos desde contexto [{0}]
-hostConfig.cce=El objeto de los datos de evento de ciclo de vida (Lifecycle event data object) {0} no es una máquina (host)
+hostConfig.cce=El objeto de los datos de evento de ciclo de vida (Lifecycle event data object) [{0}] no es una máquina (host)
 hostConfig.context.remove=Error al quitar contexto [{0}]
-hostConfig.context.restart=Error durante el arranque del contexto {0}
-hostConfig.createDirs=No puedo crear directorio para despliegue: {0}
+hostConfig.context.restart=Error durante el arranque del contexto [{0}]
+hostConfig.createDirs=No puedo crear directorio para despliegue: [{0}]
 hostConfig.deploy=Desplieque del directorio {0} de la aplicación web
 hostConfig.deploy.error=Excepción en el directorio {0} de la aplicación web
-hostConfig.deployDescriptor=Desplieque del descriptor de configuración {0}
-hostConfig.deployDescriptor.error=Error durante el despliegue del descriptor de configuración {0}
-hostConfig.deployDescriptor.localDocBaseSpecified=Se ha especificado un docBase {0} dentro del appBase de la máquina y será ignorado
-hostConfig.deployDir=Despliegue del directorio {0} de la aplicación web
-hostConfig.deployDir.error=Error durante el despliegue del directorio {0} de la aplicación web
-hostConfig.deployWar=Despliegue del archivo {0} de la aplicación web
-hostConfig.deployWar.error=Error durante el despliegue del archivo {0} de la aplicación web
+hostConfig.deployDescriptor=Desplieque del descriptor de configuración [{0}]
+hostConfig.deployDescriptor.error=Error durante el despliegue del descriptor de configuración [{0}]
+hostConfig.deployDescriptor.localDocBaseSpecified=Se ha especificado un docBase [{0}] dentro del appBase de la máquina y será ignorado
+hostConfig.deployDir=Desplegando el directorio [{0}] de la aplicación web
+hostConfig.deployDir.error=Error durante el despliegue del directorio [{0}] de la aplicación web
+hostConfig.deployWar=Despliegue del archivo [{0}] de la aplicación web
+hostConfig.deployWar.error=Error durante el despliegue del archivo [{0}] de la aplicación web
+hostConfig.deployWar.hiddenDir=El directorio [{0}] será ignorado debido a que el WAR [{1}] tiene prioridad y  unpackWARs es falso
 hostConfig.deploying=Desplegando aplicaciones web descubiertas
+hostConfig.docBaseUrlInvalid=El docBase proporcionado no puede ser expresado como una URL
 hostConfig.expand=Descompresión del archivo {0} de la aplicación web
 hostConfig.expand.error=Excepción durante la descompresión del archivo {0} de la aplicación web
 hostConfig.expanding=Descubierta descompresión de archivos de aplicaciones web
@@ -106,7 +111,7 @@ hostConfig.removeWAR=El War [{0}] está replegado
 hostConfig.removeXML=El context [{0}] está replegado
 hostConfig.start="HostConfig": Procesando "START"
 hostConfig.stop="HostConfig": Procesando "STOP"
-hostConfig.undeploy=Repliegue (undeploy) de la aplicación web que tiene como trayectoria de contexto {0}
+hostConfig.undeploy=Repliegue (undeploy) de la aplicación web que tiene como trayectoria de contexto [{0}]
 hostConfig.undeploy.error=Error durante el repliegue (undeploy) de la aplicación web que tiene como trayectoria de contexto {0}
 
 tldConfig.addListeners=Añadiendo {0} oyentes desde ficheros TLD
@@ -123,12 +128,20 @@ tldConfig.webxmlSkip=La ruta [{1}] saltada desde URI [{0}] es un duplicado
 tldConfig.webxmlStart=Explorando elementos <taglib> en web.xml
 
 userConfig.database=Excepción durante la carga de base de datos de usuario
-userConfig.deploy=Despliegue de la aplicación web para el usuario {0}
+userConfig.deploy=Despliegue de la aplicación web para el usuario [{0}]
 userConfig.deploying=Desplegando aplicaciones web para el usuario
-userConfig.error=Error durante el despliegue de la aplicación web para el usario {0}
-userConfig.start="UserConfig": Tratamiento del "START"
+userConfig.error=Error durante el despliegue de la aplicación web para el usario [{0}]
+userConfig.start="UserConfig": Procesando "START"
 userConfig.stop="UserConfig": Tratamiento del "STOP"
 
+versionLoggerListener.os.arch=Arquitectura:          {0}\n
+versionLoggerListener.os.version=Versión de Systema Operativo:      {0}\n
+versionLoggerListener.serverInfo.server.number=Número de versión de servidor:         {0}
+versionLoggerListener.serverInfo.server.version=Nombre de la versión del servidor:   {0}\n
+versionLoggerListener.vm.vendor=Vededor JVM:     {0}
+
+webAnnotationSet.invalidInjection=El método de inyección de anotación no es un recurso válido
+
 webRuleSet.absoluteOrdering=Elemento <absolute-ordering> no válido en web-fragment.xml y será ignorado
 webRuleSet.relativeOrdering=elemento <ordering> no válido en web.xml y será ignorado
 
diff --git a/java/org/apache/catalina/users/LocalStrings_es.properties b/java/org/apache/catalina/users/LocalStrings_es.properties
index 5483cdb..6ca3163 100644
--- a/java/org/apache/catalina/users/LocalStrings_es.properties
+++ b/java/org/apache/catalina/users/LocalStrings_es.properties
@@ -13,12 +13,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+memoryUserDatabase.fileNotFound=El usuario de base de datos especificado [{0}] no pudo ser encontrado
 memoryUserDatabase.notPersistable=La base de datos de usuario no es persistible - no hay permisos de grabación sobre el directorio
 memoryUserDatabase.nullGroup=Se ha especificado un nombre de grupo nulo o de tamaño cero. Se ignora el grupo.
 memoryUserDatabase.nullRole=Se ha especificado un nombre rol nulo o de tamaño cero. Se ignora el rol.
 memoryUserDatabase.nullUser=Se ha especificado un nombre de usuario nulo o de tamaño cero. Se ignora el usuario.
 memoryUserDatabase.readOnly=User database has been configured to be read only. Changes cannot be saved
-memoryUserDatabase.renameNew=Imposible de renombrar el archivo nuevo a {0}
-memoryUserDatabase.renameOld=Imposible de renombrar el archivo original a {0}
-memoryUserDatabase.writeException=IOException durante la escritura hacia {0}
+memoryUserDatabase.renameNew=Imposible de renombrar el archivo nuevo a [{0}]
+memoryUserDatabase.renameOld=Imposible de renombrar el archivo original a [{0}]
+memoryUserDatabase.writeException=IOException durante la escritura hacia [{0}]
 memoryUserDatabase.xmlFeatureEncoding=Excepción al configurar el resumidor para permitir nombres codificados en java en los ficheros XML. Sólo se soportarán los nombres con codificación IANA.
diff --git a/java/org/apache/catalina/util/LocalStrings_es.properties b/java/org/apache/catalina/util/LocalStrings_es.properties
index c56eb4b..d7fc052 100644
--- a/java/org/apache/catalina/util/LocalStrings_es.properties
+++ b/java/org/apache/catalina/util/LocalStrings_es.properties
@@ -15,16 +15,25 @@
 
 SecurityUtil.doAsPrivilege=Una excepción se ha producido durante la ejecución del bloque PrivilegedExceptionAction.
 
-extensionValidator.extension-not-found-error=ExtensionValidator[{0}][{1}]: La extensión no encuentra el "{2}" requerido.
-extensionValidator.extension-validation-error=ExtensionValidator[{0}]: Imposible de hallar la(s) extension(es) {1} requerida(s).
-extensionValidator.failload=No pude cargar la extensión {0}
+customObjectInputStream.logRequired=Se requiere un logeador váliso para el nombre de la clase filtrado con logeo
+customObjectInputStream.nomatch=La clase  [{0}] no concuerda con la expresión regular [{1}] para clases que tienen permitido el deserializamiento
+
+extensionValidator.extension-not-found-error=ExtensionValidator[{0}][{1}]: La extensión no encuentra el [{2}] requerido.
+extensionValidator.extension-validation-error=ExtensionValidator[{0}]: Imposible de hallar la(s) extension(es) [{1}] requerida(s).
+extensionValidator.failload=No pude cargar la extensión [{0}]
 extensionValidator.web-application-manifest=Manifiesto de Aplicación Web
 
 hexUtil.bad=Dígito hexadecimal incorrecto
 hexUtil.odd=Número de dígitos hexadecimales impar
 
+introspection.classLoadFailed=Fallo al cargar la clase [{0}]
+
+lifecycleBase.initFail=Fallo al iniciar el componente [{0}]
+
+netmask.cidrNegative=El CIDR [{0}] es negativo
+
 parameterMap.locked=No se permiten modificaciones en un ParameterMap bloqueado
 
 resourceSet.locked=No se permiten modificaciones en un ResourceSet bloqueado
 
-sessionIdGeneratorBase.random=Excepción inicializando generador de números aleatorios de clase {0}
+sessionIdGeneratorBase.random=Excepción inicializando generador de números aleatorios de clase [{0}]
diff --git a/java/org/apache/catalina/valves/LocalStrings_es.properties b/java/org/apache/catalina/valves/LocalStrings_es.properties
index 0ff392f..8e07186 100644
--- a/java/org/apache/catalina/valves/LocalStrings_es.properties
+++ b/java/org/apache/catalina/valves/LocalStrings_es.properties
@@ -14,50 +14,66 @@
 # limitations under the License.
 
 accessLogValve.closeFail=No pude cerrar fichero de historial
+accessLogValve.invalidLocale=Fallo al fijar locales a [{0}]\n
 accessLogValve.openDirFail=No pude crear directorio [{0}] para historiales de acceso
-accessLogValve.rotateFail=No pude rotar historial de acceso
+accessLogValve.openFail=Fallo al abrir el archivo access log [{0}]\n
+accessLogValve.rotateFail=No se pudo rotar el historial de acceso
 
 cometConnectionManagerValve.event=Excepción procesando evento
 cometConnectionManagerValve.listenerEvent=Excepción procesando evento de oyente de sesión
 
-errorReportValve.description=descripción
+errorReportValve.description=Descripción
 errorReportValve.exception=excepción
 errorReportValve.exceptionReport=Informe de Excepción
 errorReportValve.message=mensaje
 errorReportValve.note=nota
 errorReportValve.rootCause=causa raíz
-errorReportValve.rootCauseInLogs=La traza completa de la causa de este error se encuentra en los archivos de diario del servidor.
+errorReportValve.rootCauseInLogs=La traza completa de la causa de este error se encuentra en los archivos de registro del servidor.
 errorReportValve.statusHeader=Estado HTTP {0} – {1}
 errorReportValve.statusReport=Informe de estado
 errorReportValve.type=Tipo
 
 http.400.desc=El requerimiento enviado por el cliente era sintácticamente incorrecto.
 http.401.desc=Este requerimiento requiere autenticación HTTP.
-http.402.desc=Se requiere pago para acceder a este recurso.
+http.401.reason=No autorizado
+http.402.desc=Este código de estado está reservado para uso futuro.
 http.403.desc=El acceso al recurso especificado ha sido prohibido.
 http.404.desc=El recurso requerido no está disponible.
+http.404.reason=No encontrado
 http.405.desc=El método HTTP especificado no está permitido para el recurso requerido.
 http.406.desc=El recurso identificado por este requerimiento sólo es capaz de generar respuestas con características no aceptables con arreglo a las cabeceras "accept" de requerimiento.
 http.407.desc=El cliente debe de ser primero autenticado en el apoderado.
+http.407.reason=Se requiere autenticación de proxy
 http.408.desc=El cliente no produjo un requerimiento dentro del tiempo en que el servidor estaba preparado esperando.
 http.409.desc=El requerimiento no pudo ser completado debido a un conflicto con el estado actual del recurso.
 http.410.desc=El recurso requerido ya no está disponible y no se conoce dirección de reenvío.
 http.411.desc=Este requerimiento no puede ser manejado sin un tamaño definido de contenido.
 http.412.desc=Una precondición especificada ha fallado para este requerimiento.
+http.412.reason=La precon
 http.413.desc=La entidad de requerimiento es mayor de lo que el servidor quiere o puede procesar.
 http.414.desc=El servidor rechazó este requerimiento porque la URI requerida era demasiado larga.
 http.415.desc=El servidor rechazó este requerimiento porque la entidad requerida se encuentra en un formato no soportado por el recurso requerido para el método requerido.
+http.415.reason=Tipo de medio no soportado
 http.416.desc=El rango de byte requerido no puede ser satisfecho.
 http.417.desc=Lo que se espera dado por la cabecera "Expect" de requerimiento no pudo ser completado.
+http.421.desc=La solicitud ha sido dirigida a un servidor que no fue capaz de producir una respuesta
 http.422.desc=El servidor entendió el tipo de contenido y la sintáxis del requerimiento pero no pudo procesar las instrucciones contenidas.
 http.423.desc=La fuente o recurso de destino de un método está bloqueada.
+http.423.reason=Bloqueado
+http.426.reason=Se requiere actualización
+http.428.desc=El servidor de origen requiere que la petición sea condicional
+http.429.reason=Demasiadas peticiones
+http.431.reason=Los campos de cabecera solicitados son muy largos
 http.500.desc=El servidor encontró un error interno que hizo que no pudiera rellenar este requerimiento.
 http.501.desc=El servidor no soporta la funcionalidad necesaria para rellenar este requerimiento.
 http.502.desc=Este servidor recibió una respuesta inválida desde un servidor que consultó cuando actuaba como apoderado o pasarela.
 http.503.desc=El servicio requerido no está disponible en este momento.
 http.504.desc=El servidor recibió un Tiempo Agotado desde un servidor superior cuando actuaba como pasarela o apoderado.
 http.505.desc=El servidor no soporta la versión de protocolo HTTP requerida.
+http.505.reason=Versión HTTP no soportada
 http.507.desc=El recurso no tiene espacio suficiente para registrar el estado del recurso tras la ejecución de este método.
+http.507.reason=El storage no es suficiente
+http.511.desc=El cliente se tiene que autenticar para tener accesso a la red
 
 jdbcAccessLogValve.close=Excepción cerrando conexión a base de datos
 jdbcAccessLogValve.exception=Excepción realizando entrada de acceso a inserción
@@ -65,13 +81,14 @@ jdbcAccessLogValve.exception=Excepción realizando entrada de acceso a inserció
 remoteIpValve.invalidPortHeader=Valor inválido [{0}] hallado para el puerto en cabecera HTTP [{1}]
 remoteIpValve.syntax=Se han suministrado expresiones regulares [{0}] no válidas.
 
+requestFilterValve.configInvalid=Uno o más parámetros de configuración inválidos fueron proveídos para  Remote[Addr|Host]Valve lo cual impide que el Valve y sus contenedores padres puedan iniciar
 requestFilterValve.next=No hay ''siguiente'' válvula configurada
 requestFilterValve.syntax=Error de sintáxis en petición de filtro patrón {0}
 
 sslValve.certError=No pude procesar cadena de certificado [{0}] para crear un objeto  java.security.cert.X509Certificate
 sslValve.invalidProvider=El proveedor de SSL especificado en el conecto asociado con este requerimiento de [{0}] ies inválido. No se pueden procesar los datos del certificado.
 
-stuckThreadDetectionValve.notifyStuckThreadCompleted=El hilo "{0}" (id={3}), que previamente se reportó como atascado, se ha completado. Estuvo activo por aproximadamente {1} milisegundos. {2, choice,0#|0< Hay aún {2} hilo(s) que son monitorizados por esta Válvula y pueden estar atascados.}
-stuckThreadDetectionValve.notifyStuckThreadDetected=El hilo  "{0}" (id={6}) ha estado activo durante {1} miilisegundos (desde {2}) para servir el mismo requerimiento para {4} y puede estar atascado (el umbral configurado para este StuckThreadDetectionValve es de {5} segundos). Hay {3} hilo(s) en total que son monitorizados por esta Válvula y pueden estar atascados.
+stuckThreadDetectionValve.notifyStuckThreadCompleted=El hilo [{0}] (id=[{3}]), que previamente se reportó como atascado, se ha completado. Estuvo activo por aproximadamente [{1}] milisegundos. {2, choice,0#|0< Hay aún [{2}] hilo(s) que son monitorizados por esta Válvula y pueden estar atascados.}
+stuckThreadDetectionValve.notifyStuckThreadDetected=El hilo  [{0}] (id=[{6}]) ha estado activo durante [{1}] miilisegundos (desde [{2}]) para servir el mismo requerimiento para [{4}] y puede estar atascado (el umbral configurado para este StuckThreadDetectionValve es de [{5}] segundos). Hay [{3}] hilo(s) en total que son monitorizados por esta Válvula y pueden estar atascados.
 
 valveBase.noNext=Error de configuración: No hay ''siguiente'' válvula configurada
diff --git a/java/org/apache/coyote/LocalStrings_es.properties b/java/org/apache/coyote/LocalStrings_es.properties
index 2cff96d..d6389d4 100644
--- a/java/org/apache/coyote/LocalStrings_es.properties
+++ b/java/org/apache/coyote/LocalStrings_es.properties
@@ -14,3 +14,10 @@
 # limitations under the License.
 
 abstractConnectionHandler.error=Error leyendo requerimiento, ignorado
+
+abstractProcessor.fallToDebug=Nota: futuras ocurrencias de la solicitud the parseo de errores será logueada con nivel DEBUG.
+abstractProcessor.hostInvalid=El host [{0}] no es válido\n
+
+abstractProtocolHandler.init=Inicializando el manejador de protocolo [{0}]\n
+
+asyncStateMachine.invalidAsyncState=Llamando [{0}] no es una solicitud válida en el estado [{1}]\n
diff --git a/java/org/apache/coyote/ajp/LocalStrings_es.properties b/java/org/apache/coyote/ajp/LocalStrings_es.properties
index cc0bb47..52473e6 100644
--- a/java/org/apache/coyote/ajp/LocalStrings_es.properties
+++ b/java/org/apache/coyote/ajp/LocalStrings_es.properties
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-ajpmessage.invalid=Mensaje inválido recibido con firma {0}
+ajpmessage.invalid=Mensaje inválido recibido con firma [{0}]
 ajpmessage.null=No puedo añadir valor nulo
-ajpmessage.overflow=Error de desbordamiento en búfer al añadir {0} bytes en posición {1}
+ajpmessage.overflow=Error de desbordamiento en búfer al añadir [{0}] bytes en posición [{1}]
 ajpmessage.read=Los {0} bytes requeridos exceden los datos disponibles de mensaje
 
 ajpprocessor.certs.fail=Fallo en conversión de Certificado
diff --git a/java/org/apache/coyote/http11/LocalStrings_es.properties b/java/org/apache/coyote/http11/LocalStrings_es.properties
index 23b5525..225bdf0 100644
--- a/java/org/apache/coyote/http11/LocalStrings_es.properties
+++ b/java/org/apache/coyote/http11/LocalStrings_es.properties
@@ -19,7 +19,7 @@ http11processor.header.parse=Error analizando cabecera de requerimiento HTTP
 http11processor.neverused=Este método no debería de usarse nunca
 http11processor.regexp.error=Error al analizar expresión regular {0}
 http11processor.request.finish=Error acabando requerimiento
-http11processor.request.prepare=Error preparando requerimiento
+http11processor.request.prepare=Error preparando solicitud
 http11processor.request.process=Error procesando requerimiento
 http11processor.response.finish=Error acabando respuesta
 http11processor.socket.info=Excepción obteniendo información de conector
@@ -36,5 +36,8 @@ http11protocol.proto.socketexception.info=SocketException leyendo requerimiento,
 http11protocol.start=Arrancando Coyote HTTP/1.1 en puerto {0}
 
 iib.eof.error=Inesperado Fin De Archivo (EOF) leído en el enchufe (socket)
-iib.invalidmethod=Carácter inválido (CR o LF) hallado en el nombre del método
+iib.invalidmethod=Se encontró un carácter inválido en el nombre del método. Los nombres de métodos HTTP deben ser tokens
+iib.parseheaders.ise.error=Estado inesperado: las cabeceras ya fueron parseadas. No se ha reciclado el buffer??
 iib.requestheadertoolarge.error=La cabecera del requerimiento es demasido grande
+
+iob.responseheadertoolarge.error=Un intento para escribir más datos en las cabeceras de respuesta escribir fue hecho, sin embargo no hay más espacio disponible en el bufer. Aumente el parámetro maxHttpHeaderSize en el conector o escribe menos datos en las respuestas de las cabeceras.\n
diff --git a/java/javax/servlet/LocalStrings_es.properties b/java/org/apache/coyote/http11/filters/LocalStrings_es.properties
similarity index 73%
copy from java/javax/servlet/LocalStrings_es.properties
copy to java/org/apache/coyote/http11/filters/LocalStrings_es.properties
index 604e94c..0bd142c 100644
--- a/java/javax/servlet/LocalStrings_es.properties
+++ b/java/org/apache/coyote/http11/filters/LocalStrings_es.properties
@@ -13,11 +13,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=No es un carácter ISO 8859-1: {0}
-
-httpConstraintElement.invalidRolesDeny=No se pueden especificar Roles al utilizar DENY (DENEGAR)
-
-httpMethodConstraintElement.invalidMethod=Método HTTP inválido
-
-value.false=false
-value.true=true
+chunkedInputFilter.eos=Fin del flujo inesperado mientras se leía la petición del cuerpo
+chunkedInputFilter.eosTrailer=Fin inesperado de  stream mintras se leían las cabeceras finales
+chunkedInputFilter.invalidCrlfNoCR=Fin de linea incorrecto (CR no debe estar antes de LF)
diff --git a/java/org/apache/tomcat/util/threads/res/LocalStrings_es.properties b/java/org/apache/coyote/http11/upgrade/LocalStrings_es.properties
similarity index 79%
copy from java/org/apache/tomcat/util/threads/res/LocalStrings_es.properties
copy to java/org/apache/coyote/http11/upgrade/LocalStrings_es.properties
index 169f5a7..9d3b8de 100644
--- a/java/org/apache/tomcat/util/threads/res/LocalStrings_es.properties
+++ b/java/org/apache/coyote/http11/upgrade/LocalStrings_es.properties
@@ -13,4 +13,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-threadPoolExecutor.threadStoppedToAvoidPotentialLeak=Parando hilo {0} para evita fallos potenciales de memoria tras haberse parado un contexto.
+upgrade.sis.readListener.set=Es ilegal llamar a setReadListener() más de una vez para la misma conexión actualizada\n
+upgrade.sos.writeListener.null=Es ilegal pasar valor nulo a setWriteListener()\n
diff --git a/java/org/apache/jasper/resources/LocalStrings_es.properties b/java/org/apache/jasper/resources/LocalStrings_es.properties
index b72c2f8..85f099d 100644
--- a/java/org/apache/jasper/resources/LocalStrings_es.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_es.properties
@@ -34,8 +34,8 @@ jsp.error.attribute.unterminated=el atributo para [{0}] no está terminado corre
 jsp.error.bad.scratch.dir=El directorio de trabajo especificado: [{0}] no es utilizable.
 jsp.error.badStandardAction=Acción estándar incorrecta
 jsp.error.bad_attribute=El atributo [{0}] no es válido según el TLD especificado
-jsp.error.beans.nobeaninfo=No se puede encontrar BeanInfo para el bean  ''{0}'' seguramente la clase no existe
 jsp.error.bad_tag=No existe el tag [{0}] en la biblioteca importada con prefijo [{1}]
+jsp.error.beans.nobeaninfo=No se puede encontrar BeanInfo para el bean  ''{0}'' seguramente la clase no existe
 jsp.error.beans.nomethod=No puedo encontrar un método para leer la propiedad [{0}] en un bean del tipo [{1}]
 jsp.error.beans.nomethod.setproperty=No puedo encontrar un método para escribir la propiedad [{0}] en un bean del tipo [{2}]
 jsp.error.beans.noproperty=No puedo encontrar información de la propiedad [{0}] en un bean del tipo [{1}]
diff --git a/java/org/apache/tomcat/util/threads/res/LocalStrings_es.properties b/java/org/apache/tomcat/util/LocalStrings_es.properties
similarity index 78%
copy from java/org/apache/tomcat/util/threads/res/LocalStrings_es.properties
copy to java/org/apache/tomcat/util/LocalStrings_es.properties
index 169f5a7..bb96f4e 100644
--- a/java/org/apache/tomcat/util/threads/res/LocalStrings_es.properties
+++ b/java/org/apache/tomcat/util/LocalStrings_es.properties
@@ -13,4 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-threadPoolExecutor.threadStoppedToAvoidPotentialLeak=Parando hilo {0} para evita fallos potenciales de memoria tras haberse parado un contexto.
+diagnostics.threadDumpTitle=Volcado del hilo completo
+diagnostics.vmInfoClassCompilation=Compilación de clase
+diagnostics.vmInfoLogger=Información de logueo
+diagnostics.vmInfoSystem=Propiedades del sistema
diff --git a/java/org/apache/tomcat/util/buf/LocalStrings_es.properties b/java/org/apache/tomcat/util/buf/LocalStrings_es.properties
index 3037648..a513aca 100644
--- a/java/org/apache/tomcat/util/buf/LocalStrings_es.properties
+++ b/java/org/apache/tomcat/util/buf/LocalStrings_es.properties
@@ -14,3 +14,5 @@
 # limitations under the License.
 
 b2cConverter.unknownEncoding=La codificación de carácter [{0}] no está soportada
+
+uDecoder.convertHexDigit.notHex=[{0}] no es un número hexadecimal\n
diff --git a/java/org/apache/coyote/LocalStrings_es.properties b/java/org/apache/tomcat/util/compat/LocalStrings_es.properties
similarity index 86%
copy from java/org/apache/coyote/LocalStrings_es.properties
copy to java/org/apache/tomcat/util/compat/LocalStrings_es.properties
index 2cff96d..03b8f17 100644
--- a/java/org/apache/coyote/LocalStrings_es.properties
+++ b/java/org/apache/tomcat/util/compat/LocalStrings_es.properties
@@ -13,4 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-abstractConnectionHandler.error=Error leyendo requerimiento, ignorado
+jre9Compat.invalidModuleUri=El módulo URI proveído [{0}] no pudo ser convertiod a una URL para ser procesado por JarScanner
diff --git a/java/org/apache/tomcat/util/http/LocalStrings_es.properties b/java/org/apache/tomcat/util/http/LocalStrings_es.properties
new file mode 100644
index 0000000..84173e5
--- /dev/null
+++ b/java/org/apache/tomcat/util/http/LocalStrings_es.properties
@@ -0,0 +1,23 @@
+# 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.
+
+cookies.invalidCookieToken=Cookies: cookie no válida. El valor no es un token o un valor acotado
+
+parameters.copyFail=Fallo al crear copia de los valores orignales del parámetro para propósitos de debug
+parameters.decodeFail.debug=Fallo al decodificar el caracter. Parámetro [{0}] con valor [{1}] ha sido ignorado.\n
+parameters.fallToDebug=Nota: Futuras ocurrencias de error del Parámetro serán loggueadas a nivel DEBUG.\n
+parameters.maxCountFail=Se detectaron más del máximo número de los parámetros solicitados (GET plus POST) para una solicitud simple ([{0}]). Cualquier parámetro por encima de este límite ha sido ignorado. Para cambiar este límite, fije el atributo maxParameterCount attribute en el Conector.\n
+parameters.maxCountFail.fallToDebug=Nota: futuras ocurrencias de este tipo de error serán logueadas a  nivel DEBUG
+parameters.noequal=El parámetro que inicia en la posición [{0}] y termina en la posición [{1}] con valor de [{2}] no tiene un caracter  ''='' a continuación
diff --git a/java/javax/servlet/LocalStrings_es.properties b/java/org/apache/tomcat/util/http/parser/LocalStrings_es.properties
similarity index 63%
copy from java/javax/servlet/LocalStrings_es.properties
copy to java/org/apache/tomcat/util/http/parser/LocalStrings_es.properties
index 604e94c..a419227 100644
--- a/java/javax/servlet/LocalStrings_es.properties
+++ b/java/org/apache/tomcat/util/http/parser/LocalStrings_es.properties
@@ -13,11 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=No es un carácter ISO 8859-1: {0}
-
-httpConstraintElement.invalidRolesDeny=No se pueden especificar Roles al utilizar DENY (DENEGAR)
-
-httpMethodConstraintElement.invalidMethod=Método HTTP inválido
-
-value.false=false
-value.true=true
+http.illegalCharacterIpv4=El caracter  [{0}] nunca es válido en una dirección IPv4.\n
+http.illegalCharacterIpv6=El caracter [{0}] nunca es válido en una dirección IPv6.\n
+http.invalidHextet=Hextet no válido. Hextet debe consistir de 4 caracteres hexadecimales o menos.
+http.singleColonEnd=Una dirección IPv6 no puede terminar con solo un ':'.\n
+http.tooManyColons=Una dirección IPv6 no puede contener más de 2 caracteres  ":" seguidos
diff --git a/java/javax/servlet/LocalStrings_es.properties b/java/org/apache/tomcat/util/scan/LocalStrings_es.properties
similarity index 69%
copy from java/javax/servlet/LocalStrings_es.properties
copy to java/org/apache/tomcat/util/scan/LocalStrings_es.properties
index 604e94c..74e63b2 100644
--- a/java/javax/servlet/LocalStrings_es.properties
+++ b/java/org/apache/tomcat/util/scan/LocalStrings_es.properties
@@ -13,11 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=No es un carácter ISO 8859-1: {0}
-
-httpConstraintElement.invalidRolesDeny=No se pueden especificar Roles al utilizar DENY (DENEGAR)
-
-httpMethodConstraintElement.invalidMethod=Método HTTP inválido
-
-value.false=false
-value.true=true
+jarScan.classloaderFail=Fallo al escanear  [{0}] desde la herarquia classloader hierarchy
+jarScan.classloaderJarNoScan=No se ejecutó el escaneo de JAR en el archivo  [{0}] de la ruta de clase
+jarScan.webinflibJarNoScan=No se ejecutó escaneo JAR en el archivo [{0}] de /WEB-INF/lib\n
+jarScan.webinflibStart=Buscando JARs en /WEB-INF/lib
diff --git a/java/org/apache/tomcat/util/threads/res/LocalStrings_es.properties b/java/org/apache/tomcat/util/threads/res/LocalStrings_es.properties
index 169f5a7..694bee7 100644
--- a/java/org/apache/tomcat/util/threads/res/LocalStrings_es.properties
+++ b/java/org/apache/tomcat/util/threads/res/LocalStrings_es.properties
@@ -13,4 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-threadPoolExecutor.threadStoppedToAvoidPotentialLeak=Parando hilo {0} para evita fallos potenciales de memoria tras haberse parado un contexto.
+threadPoolExecutor.threadStoppedToAvoidPotentialLeak=Parando hilo [{0}] para evita fallos potenciales de memoria tras haberse parado un contexto.
diff --git a/java/org/apache/tomcat/websocket/LocalStrings_es.properties b/java/org/apache/tomcat/websocket/LocalStrings_es.properties
new file mode 100644
index 0000000..547bb22
--- /dev/null
+++ b/java/org/apache/tomcat/websocket/LocalStrings_es.properties
@@ -0,0 +1,44 @@
+# 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.
+
+caseInsensitiveKeyMap.nullKey=No se permiten llaves nulas (Null)
+
+perMessageDeflate.duplicateParameter=La definición del parámetro de extención  [{0}] esta duplicada
+perMessageDeflate.invalidWindowSize=Una ventana inválida de tamaño  [{1}] fue especificada para [{0}]. Los valores válidos son números entre 8 y 15 incluyendo los extremos.
+
+util.notToken=Un parámetro con extención ilegal fue especificado con nombre [{0}] y valor [{1}]
+util.unknownDecoderType=No se reconoce el decodificador tipo [{0}]
+
+wsFrame.closed=Nuevo cuadro recibido luego de cerrar el cuadro de control
+wsFrame.notMasked=El cuadro del cliente no fue enmascarado, pero todos los cuadros de clientes deben ser enmascarados
+wsFrame.wrongRsv=El rango del cliente fija los bits reservados a [{0}] para un mensaje con opCode [{1}] el cual no fue soportado por este endpoint\n
+
+wsHandshakeRequest.invalidUri=La cadena [{0}] no puede ser usada para construir una URI válida
+
+wsRemoteEndpoint.closed=El mensaje no será enviado porque la sesión WebSocket ha sido cerrada
+wsRemoteEndpoint.closedDuringMessage=No se enviara el resto del mensaje debido a que la sesión WebSocket esta cerrada
+wsRemoteEndpoint.flushOnCloseFailed=Los mensages de lote estan habilitados aún después de haberse cerrado la sesión. Imposible descartar los messages de lote restantes.
+wsRemoteEndpoint.tooMuchData=Ping o pong no pueden enviar más de 125 bytes
+wsRemoteEndpoint.wrongState=El endpoint remoto estaba en estado [{0}] el cual es un estado no válido para el método llamado
+
+wsSession.closed=La sesión WebSocket [{0}] ha sido cerrada y ningún otro método (aparte de  close()) puede ser llamado en una sesión cerrada\n
+wsSession.created=La sesion WebSocket  [{0}] fue creada\n
+wsSession.doClose=Cerrando WebSocket sesión [{1}]
+wsSession.duplicateHandlerText=Un manejador de mensaje de texto ya ha sido configurado
+wsSession.instanceNew=Falló la registración de la instancia del dispoitivo final
+
+wsWebSocketContainer.missingWWWAuthenticateHeader=Fallo al manejar el código de respuesta HTTP [{0}]. No existe la cabecera WWW-Authenticate en la respuesta
+wsWebSocketContainer.pathNoHost=No se especificó ningún host en URI
+wsWebSocketContainer.sessionCloseFail=La sesión con ID [{0}] no se cerró correctamente
diff --git a/java/javax/servlet/LocalStrings_es.properties b/java/org/apache/tomcat/websocket/server/LocalStrings_es.properties
similarity index 69%
copy from java/javax/servlet/LocalStrings_es.properties
copy to java/org/apache/tomcat/websocket/server/LocalStrings_es.properties
index 604e94c..14e6af2 100644
--- a/java/javax/servlet/LocalStrings_es.properties
+++ b/java/org/apache/tomcat/websocket/server/LocalStrings_es.properties
@@ -13,11 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=No es un carácter ISO 8859-1: {0}
+serverContainer.configuratorFail=Fallo al crear configurador de tipo [{0}] para el POJO de tipo [{1}]
+serverContainer.pojoDeploy=Clase  POJO [{0}] desplegado en la ruta [{1}] en ServletContext [{2}]\n
 
-httpConstraintElement.invalidRolesDeny=No se pueden especificar Roles al utilizar DENY (DENEGAR)
+uriTemplate.invalidPath=El camino [{0}] no es válido.\n
 
-httpMethodConstraintElement.invalidMethod=Método HTTP inválido
-
-value.false=false
-value.true=true
+wsFrameServer.bytesRead=[{0}] leídos del bufer de entrada llistos para ser procesados
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 3462548..77bf673 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -160,6 +160,10 @@
         Back-port various corrections and improvements to the English versions
         of the i18n messages. (markt)
       </fix>
+      <fix>
+        Back-port various corrections and improvements to the Spanish i18n
+        messages. (markt)
+      </fix>
     </changelog>
   </subsection>
 </section>
diff --git a/webapps/examples/WEB-INF/classes/LocalStrings_es.properties b/webapps/examples/WEB-INF/classes/LocalStrings_es.properties
index 60a410e..eaac59a 100644
--- a/webapps/examples/WEB-INF/classes/LocalStrings_es.properties
+++ b/webapps/examples/WEB-INF/classes/LocalStrings_es.properties
@@ -36,7 +36,7 @@ requestparams.firstname=Nombre:
 requestparams.lastname=Apellidos:
 requestparams.no-params=No hay párametro. Por favor, usa alguno
 requestparams.params-in-req=Parámetros en este Request:
-requestparams.title=Ejemplo de parámetros de Requerimiento:
+requestparams.title=Ejemplo de solicitud con parámetros:
 
 sessions.adddata=Añade datos a tu sesión:
 sessions.created=Creado:


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org