# Copyright 2004 The Apache Software Foundation.
#
# Licensed 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.

# standard messages (Spec. 2.5.2.4)

# components
javax.faces.component.UIInput.CONVERSION = {0}: Conversion error occurred.
javax.faces.component.UIInput.REQUIRED = {0}: Validation Error: Value is required.
javax.faces.component.UIInput.UPDATE = {0}: An error occurred when processing your submitted information. 

javax.faces.component.UISelectOne.INVALID = {0}: Validation Error: Value is not valid
javax.faces.component.UISelectMany.INVALID = {0}: Validation Error: Value is not valid

# converters
javax.faces.converter.BigDecimalConverter.DECIMAL = {2}: ''{0}'' must be a signed decimal number.
javax.faces.converter.BigDecimalConverter.DECIMAL_detail = {2}: ''{0}'' must be a signed decimal number consisting of zero or more digits, that may be followed by a decimal point and fraction.  Example: {1}
 
javax.faces.converter.BigIntegerConverter.BIGINTEGER = {2}: ''{0}'' must be a number consisting of one or more digits.
javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: ''{0}'' must be a number consisting of one or more digits. Example: {1}
 
javax.faces.converter.BooleanConverter.BOOLEAN = {1}: ''{0}'' must be ''true'' or ''false''.
javax.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: ''{0}'' must be ''true'' or ''false''.  Any value other than ''true'' will evaluate to ''false''.

javax.faces.converter.ByteConverter.BYTE = {2}: ''{0}'' must be a number between 0 and 255.
javax.faces.converter.ByteConverter.BYTE_detail = {2}: ''{0}'' must be a number between 0 and 255.  Example: {1}
 
javax.faces.converter.CharacterConverter.CHARACTER = {1}: ''{0}'' must be a valid character.
javax.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' must be a valid ASCII character.

javax.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' could not be understood as a date.
javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1} 
javax.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' could not be understood as a time.
javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' could not be understood as a time. Example: {1} 
javax.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' could not be understood as a date and time.
javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' could not be understood as a date and time. Example: {1} 
javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: A ''pattern'' or ''type'' attribute must be specified to convert the value ''{0}''.

javax.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' must be a number consisting of one or more digits.
javax.faces.converter.DoubleConverter.DOUBLE_detail = {2}: ''{0}'' must be a number between 4.9E-324 and 1.7976931348623157E308  Example: {1}

javax.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' must be convertible to an enum.
javax.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' must be convertible to an enum from the enum that contains the constant ''{1}''.
javax.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' must be convertible to an enum from the enum, but no enum class provided.
javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail = {1}: ''{0}'' must be convertible to an enum from the enum, but no enum class provided.

javax.faces.converter.FloatConverter.FLOAT = {2}: ''{0}'' must be a number consisting of one or more digits.
javax.faces.converter.FloatConverter.FLOAT_detail = {2}: ''{0}'' must be a number between 1.4E-45 and 3.4028235E38  Example: {1}

javax.faces.converter.IntegerConverter.INTEGER = {2}: ''{0}'' must be a number consisting of one or more digits.
javax.faces.converter.IntegerConverter.INTEGER_detail = {2}: ''{0}'' must be a number between -2147483648 and 2147483647 Example: {1}

javax.faces.converter.LongConverter.LONG = {2}: ''{0}'' must be a number consisting of one or more digits.
javax.faces.converter.LongConverter.LONG_detail = {2}: ''{0}'' must be a number between -9223372036854775808 to 9223372036854775807 Example: {1}

javax.faces.converter.NumberConverter.CURRENCY = {2}: ''{0}'' could not be understood as a currency value.
javax.faces.converter.NumberConverter.CURRENCY_detail = {2}: ''{0}'' could not be understood as a currency value. Example: {1}
javax.faces.converter.NumberConverter.PERCENT = {2}: ''{0}'' could not be understood as a percentage.
javax.faces.converter.NumberConverter.PERCENT_detail = {2}: ''{0}'' could not be understood as a percentage. Example: {1}
javax.faces.converter.NumberConverter.NUMBER = {2}: ''{0}'' is not a number.
javax.faces.converter.NumberConverter.NUMBER_detail = {2}: ''{0}'' is not a number. Example: {1}
javax.faces.converter.NumberConverter.PATTERN = {2}: ''{0}'' is not a number pattern.
javax.faces.converter.NumberConverter.PATTERN_detail = {2}: ''{0}'' is not a number pattern. Example: {1}

javax.faces.converter.ShortConverter.SHORT = {2}: ''{0}'' must be a number consisting of one or more digits.
javax.faces.converter.ShortConverter.SHORT_detail = {2}: ''{0}'' must be a number between -32768 and 32767 Example: {1}

javax.faces.converter.STRING = {1}: Could not convert ''{0}'' to a string.

# validators
javax.faces.validator.NOT_IN_RANGE = Validation Error: Specified attribute is not between the expected values of {0} and {1}.

javax.faces.validator.DoubleRangeValidator.MAXIMUM = {1}: Validation Error: Value is greater than allowable maximum of ''{0}''
javax.faces.validator.DoubleRangeValidator.MINIMUM = {1}: Validation Error: Value is less than allowable minimum of ''{0}''
javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: Validation Error: Specified attribute is not between the expected values of {0} and {1}.
javax.faces.validator.DoubleRangeValidator.TYPE = {0}: Validation Error: Value is not of the correct type

javax.faces.validator.LengthValidator.MAXIMUM = {1}: Validation Error: Length is greater than allowable maximum of ''{0}''
javax.faces.validator.LengthValidator.MINIMUM = {1}: Validation Error: Length is less than allowable minimum of ''{0}''

javax.faces.validator.LongRangeValidator.MAXIMUM = {1}: Validation Error: Value is greater than allowable maximum of ''{0}''
javax.faces.validator.LongRangeValidator.MINIMUM = {1}: Validation Error: Value is less than allowable minimum of ''{0}''
javax.faces.validator.LongRangeValidator.NOT_IN_RANGE = {2}: Validation Error: Specified attribute is not between the expected values of {0} and {1}.
javax.faces.validator.LongRangeValidator.TYPE = {0}: Validation Error: Value is not of the correct type.

javax.faces.validator.RegexValidator.NOT_MATCHED = {1}: Validation Error: Value not according to pattern ''{0}''
javax.faces.validator.RegexValidator.PATTERN_NOT_SET = A pattern must be set for validate.
javax.faces.validator.RegexValidator.MATCH_EXCEPTION = The pattern is not a valid regular expression.

javax.faces.validator.BeanValidator.MESSAGE = {1}: {0}

# myfaces specific messages
org.apache.myfaces.renderkit.html.HtmlMessagesRenderer.IN_FIELD = \u0020in {0}
org.apache.myfaces.Email.INVALID = Validation Error
org.apache.myfaces.Email.INVALID_detail =The given value ({0}) is not a correct email-address.

org.apache.myfaces.Equal.INVALID = Validation Error
org.apache.myfaces.Equal.INVALID_detail =The given value ({0}) is not equal with value of "{1}".

org.apache.myfaces.Creditcard.INVALID = Validation Error
org.apache.myfaces.Creditcard.INVALID_detail =The given value ({0}) is not a correct creditcard

org.apache.myfaces.Regexpr.INVALID=Validation Error
org.apache.myfaces.Regexpr.INVALID_detail=The given value ({0}) is not valid.

org.apache.myfaces.Date.INVALID = Validation Error
org.apache.myfaces.Date.INVALID_detail =The given value ({0}) is not a correct date

org.apache.myfaces.ticker.NOCONNECTION = No Connection: 
org.apache.myfaces.ticker.NOCONNECTION_detail = Maybe you are behind a firewall?

org.apache.myfaces.ISBN.INVALID = Validation Error
org.apache.myfaces.ISBN.INVALID_detail =The given value ({0}) is not a correct isbn code.

org.apache.myfaces.tree2.MISSING_NODE        = Missing Node
org.apache.myfaces.tree2.MISSING_NODE_detail = The requested node "{0}" does not exist.

org.apache.myfaces.calendar.CONVERSION = Conversion Error
org.apache.myfaces.calendar.CONVERSION_detail = "{0}": The given value "{1}" could not be converted to a date.

org.apache.myfaces.FileUpload.SIZE_LIMIT = "{0}": The uploaded file exceeded the maximum size of {1} bytes.
