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

# The properties listed below are resolved by the default message resolver.

# standard
javax.validation.constraints.Null.message=tiene que ser null
javax.validation.constraints.NotNull.message=no puede ser null
javax.validation.constraints.AssertTrue.message=tiene que ser true
javax.validation.constraints.AssertFalse.message=tiene que ser false
javax.validation.constraints.Min.message=tiene que ser menor o igual que {value}
javax.validation.constraints.Max.message=tiene que ser mayor o igual que {value}
javax.validation.constraints.Size.message=el tama\u00F1o tiene que estar comprendido entre {min} y {max}
javax.validation.constraints.Digits.message=valor num\u00E9rico fuera de los l�mites (se espera <{integer} cifras>.<{fraction} cifras>)
javax.validation.constraints.Past.message=tiene que ser una fecha en el pasado
javax.validation.constraints.Future.message=tiene que ser una fecha en el futuro
javax.validation.constraints.Pattern.message=tiene que corresponder a la expresi\u00F3n regular "{regexp}"
javax.validation.constraints.DecimalMax.message=tiene que ser mayor o igual que {value}
javax.validation.constraints.DecimalMin.message=tiene que ser menor o igual que {value}

# additional built-ins
org.apache.bval.constraints.NotEmpty.message=no puede ser vacio
org.apache.bval.constraints.Email.message=tiene que ser un correo email bien formado
