# 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.
authenticator.certificates = No hay cadena de certificados del cliente en esta petici\u00F3n
authenticator.formlogin = Referencia directa al formulario de conexi\u00F3n (p\u00E1gina de formulario de login) inv\u00E1lida
authenticator.loginFail = No pude ingresar
authenticator.manager = Excepci\u00F3n inicializando administradores de confianza
authenticator.noAuthHeader = El cliente no ha enviado autorizaci\u00F3n de cabecera
authenticator.notContext = Error de Configuraci\u00F3n\: Debe de estar unido a un Contexto
authenticator.requestBodyTooBig = El cuerpo del requerimiento era demasiado grande para realizar cach\u00E9 durante el proceso de autenticaci\u00F3n
authenticator.sessionExpired = El tiempo permitido para realizar login ha sido excedido. Si deseas continuar, debes hacer clik dos veces y volver a hacer clik otra vez o cerrar y reabrir tu navegador
authenticator.unauthorized = Imposible autenticar mediante las credenciales suministradas
digestAuthenticator.cacheRemove = Se ha quitado una entrada v\u00E1lida de la cach\u00E9 "nonce" del cliente para hacer espacio a nuevas entradas.. Ahora es posible un ataque de reinyecci\u00F3n. Para prevenirlos, reduce "nonceValidity" o incrementa "cnonceCacheSize". El resto de mensajes de este tipo ser\u00E1n suspendidos durante 5 minutos.
formAuthenticator.forwardErrorFail = Error inesperado de reenv\u00EDo a p\u00E1gina de error
formAuthenticator.forwardLoginFail = Error inesperado de reenv\u00EDo a pagina de ingreso
formAuthenticator.noErrorPage = No se ha definido p\u00E1gina de error para la autenticaci\u00F3n FORM en el contexto [{0}]
formAuthenticator.noLoginPage = No se ha definido p\u00E1gina de ingreso para la autenticaci\u00F3n FORM en el contexto [{0}]
spnegoAuthenticator.authHeaderNoToken = La cabecera de Negociaci\u00F3n de autorizaci\u00F3n enviada por el cliente no inclu\u00EDa una ficha
spnegoAuthenticator.authHeaderNotNego = La cabecera de autorizaci\u00F3n enviada por el cliente no comenzaba con Negotiate
spnegoAuthenticator.serviceLoginFail = No puedo ingresar como director del servicio
spnegoAuthenticator.ticketValidateFail = No pude validar el billete suministrado por el cliente
