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

# Symbols

# CreditCardValidator
creditCardValidatorAllowedFormatChars=\ -

# Currency/Number Validator
allowNegative=true
decimalSeparator=.
maxValue=NaN
minValue=NaN
thousandsSeparator=,
groupingSeparator=,

# CurrencyValidator
currencyValidatorPrecision=2

# DateValidator
dateValidatorAllowedFormatChars=/- \\.
validateAsString=true

# NumberValidator
numberValidatorDomain=real
numberValidatorPrecision=-1

# PhoneNumberValidator
phoneNumberValidatorAllowedFormatChars=-()+ .

# SocialSecurityValidator
socialSecurityValidatorAllowedFormatChars=\ -

# ZipCodeValidator
zipCodeValidatorAllowedFormatChars=\ -
zipCodeValidatorDomain=US Only


# Tooltip errors

# CurrencyValidator, NumberValidator

decimalPointCountError=The decimal separator can occur only once.
invalidCharError=The input contains invalid characters.
invalidFormatCharsError=One of the formatting parameters is invalid.
lowerThanMinError=The amount entered is too small.
negativeError=The amount may not be negative.
negativeNumberFormatError=The negative format of the input number is incorrect.
negativeCurrencyFormatError=The negative format of the input currency is incorrect.
positiveCurrencyFormatError=The positive format of the input currency is incorrect.
parseError=The input string could not be parsed.
negativeSymbolError=The negative symbol is repeated or not in right place.
precisionError=The amount entered has too many digits beyond the decimal point.
fractionalDigitsError=The amount entered has too many digits beyond the decimal point.
separationError=The thousands separator must be followed by three digits.
currencyStringError=Currency name is repeated or not correct.
localeUndefinedError=Locale is undefined.

# CreditCardValidator

invalidCharErrorCCV=Invalid characters in your credit card number. (Enter numbers only.)
invalidNumberError=The credit card number is invalid.
noNumError=No credit card number is specified.
noTypeError=No credit card type is specified or the type is not valid.
wrongLengthErrorCCV=Your credit card number contains the wrong number of digits.
wrongTypeError=Incorrect card type is specified.

# CurrencyValidator

currencySymbolError=The currency symbol occurs in an invalid location.
exceedsMaxErrorCV=The amount entered is too large.

# DateValidator

wrongLengthErrorDV=Type the date in the format.
invalidCharErrorDV=The date contains invalid characters.
wrongMonthError=Enter a month between 1 and 12.
wrongDayError=Enter a valid day for the month.
wrongYearError=Enter a year between 0 and 9999.
formatError=Configuration error: Incorrect formatting string.

# EmailValidator

invalidCharErrorEV=Your email address contains invalid characters.
invalidDomainErrorEV=The domain in your email address is incorrectly formatted.
invalidIPDomainError=The IP domain in your email address is incorrectly formatted.
invalidPeriodsInDomainError=The domain in your email address has consecutive full stops.
missingAtSignError=An at sign (@) is missing in your email address.
missingPeriodInDomainError=The domain in your email address is missing a full stop.
missingUsernameError=The user name in your email address is missing.
tooManyAtSignsError=Your email address contains too many @ characters.

# NumberValidator

exceedsMaxErrorNV=The number entered is too large.
integerError=The number must be an integer.

# PhoneNumberValidator

invalidCharErrorPNV=Your phone number contains invalid characters.
minDigitsPNV=10
wrongLengthErrorPNV=Your phone number must contain at least {0} digits.

# RegExValidator

noMatchError=The field is invalid.
noExpressionError=The expression is missing.

# SocialSecurityValidator

invalidCharErrorSSV=You entered invalid characters in your Social Security number.
wrongFormatError=The Social Security number must be 9 digits or in the form NNN-NN-NNNN.
zeroStartError=Invalid Social Security number; the number cannot start with 000.

# StringValidator

tooLongError=This string is longer than the maximum allowed length. This must be less than {0} characters long.
tooShortError=This string is shorter than the minimum allowed length. This must be at least {0} characters long.
minLength=NaN
maxLength=NaN

# Validator

requiredFieldError=This field is required.

# ZipCodeValidator

invalidCharErrorZCV=The ZIP code contains invalid characters.
invalidDomainErrorZCV=The domain parameter is invalid. It must be either 'US Only', 'Canada Only', or 'US or Canada'.
wrongCAFormatError=The Canadian postal code must be formatted 'A1B 2C3'.
wrongLengthErrorZCV=The ZIP code must be 5 digits or 5+4 digits.
wrongUSFormatError=The ZIP+4 code must be formatted '12345-6789'.
invalidFormatCharsZCV=The allowedFormatChars parameter is invalid. Alphanumeric characters are not allowed (a-z A-Z 0-9).


# Developer RTE Section

# Shared

invalidFormatChars=The allowedFormatChars parameter is invalid. It cannot contain any digits.

# CreditCardValidator

missingCardType=The value being validated doesn't contain a cardType property.
missingCardNumber=The value being validated doesn't contain a cardNumber property.
CNSAttribute=The cardNumberSource attribute, '{0}', can not be of type String.
CTSAttribute=The cardTypeSource attribute, '{0}', can not be of type String.

# DateValidator

DSAttribute=The daySource attribute, '{0}', can not be of type String.
MSAttribute=The monthSource attribute, '{0}', can not be of type String.
YSAttribute=The yearSource attribute, '{0}', can not be of type String.

# Validator

fieldNotFound='{0}' field not found.
SAttribute=The source attribute, '{0}', can not be of type String.
SAttributeMissing=The source attribute must be specified when the property attribute is specified.
PAttributeMissing=The property attribute must be specified when the source attribute is specified.
