################################################################################
##
##  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=Ægte
numberValidatorPrecision=-1

# PhoneNumberValidator
phoneNumberValidatorAllowedFormatChars=-()+ .

# SocialSecurityValidator
socialSecurityValidatorAllowedFormatChars=\ -

# ZipCodeValidator
zipCodeValidatorAllowedFormatChars=\ -
zipCodeValidatorDomain=Kun USA


# Tooltip errors

# CurrencyValidator, NumberValidator

decimalPointCountError=Decimalskilletegnet må kun forekomme én gang.
invalidCharError=Inputtet indeholder ugyldige tegn.
invalidFormatCharsError=Én af formateringsparametrene er ugyldig.
lowerThanMinError=Det angivne antal er for lille.
negativeError=Antallet må ikke være negativt.
negativeNumberFormatError=Inputnummerets negative format er forkert.
negativeCurrencyFormatError=Inputvalutaens negative format er forkert.
positiveCurrencyFormatError=Inputvalutaens positive format er forkert.
parseError=Inputstrengen kunne ikke fortolkes.
negativeSymbolError=Det negative symbol gentages eller står forkert.
precisionError=Det angivne antal har for mange cifre efter decimaltegnet.
fractionalDigitsError=Det angivne antal har for mange cifre efter decimaltegnet.
separationError=Tusindeskilletegnet skal efterfølges af tre cifre.
currencyStringError=Valutaens navn er ikke gentaget eller det er forkert.
localeUndefinedError=Landestandarden er ikke defineret.

# CreditCardValidator

invalidCharErrorCCV=Der er ugyldige tegn i kreditkortnummeret. Du må kun indtaste tal.
invalidNumberError=Kreditkortnummeret er ugyldigt.
noNumError=Der er ikke angivet noget kreditkortnummer.
noTypeError=Der er ikke angivet nogen kreditkorttype, eller typen er ugyldig.
wrongLengthErrorCCV=Dit kreditkortnummer indeholder et forkert antal cifre.
wrongTypeError=Der er angivet en forkert korttype.

# CurrencyValidator

currencySymbolError=Valutasymbolet har en ugyldig placering.
exceedsMaxErrorCV=Det angivne antal er for stort.

# DateValidator

wrongLengthErrorDV=Skriv datoen i formatet.
invalidCharErrorDV=Datoen indeholder ugyldige tegn.
wrongMonthError=Angiv en måned fra 1 til 12.
wrongDayError=Indtast en gyldig dag for måneden.
wrongYearError=Angiv et årstal fra 0 til 9999.
formatError=Konfigurationsfejl: Forkert formateringsstreng.

# EmailValidator

invalidCharErrorEV=Din e-mail-adresse indeholder ugyldige tegn.
invalidDomainErrorEV=Domænet i din e-mail-adresse har forkert format.
invalidIPDomainError=IP-domænet i din e-mail-adresse har forkert format.
invalidPeriodsInDomainError=Domænet i din e-mail-adresse har flere punktummer i træk.
missingAtSignError=Snabel-a-tegnet (@) mangler i din e-mail-adresse.
missingPeriodInDomainError=Der mangler et punktum i domænet i din e-mail-adresse.
missingUsernameError=Brugernavnet mangler i din e-mail-adresse.
tooManyAtSignsError=Din e-mail-adresse indeholder for mange @-tegn.

# NumberValidator

exceedsMaxErrorNV=Det angivne tal er for stort.
integerError=Tallet skal være et heltal.

# PhoneNumberValidator

invalidCharErrorPNV=Dit telefonnummer indeholder ugyldige tegn.
minDigitsPNV=10
wrongLengthErrorPNV=Dit telefonnummer skal indeholde mindst {0} cifre.

# RegExValidator

noMatchError=Feltet er ugyldigt.
noExpressionError=Udtrykket mangler.

# SocialSecurityValidator

invalidCharErrorSSV=Du har indtastet ugyldige tegn i dit personnummer.
wrongFormatError=Personnummeret skal bestå af 9 cifre eller have formatet NNN-NN-NNNN.
zeroStartError=Ugyldigt personnummer. Nummeret må ikke starte med 000.

# StringValidator

tooLongError=Denne streng er længere end den tilladte maksimumlængde. Den skal være kortere end {0} tegn.
tooShortError=Denne streng er kortere end den tilladte minimumlængde. Den skal være mindst {0} tegn lang.
minLength=NaN
maxLength=NaN

# Validator

requiredFieldError=Dette felt er obligatorisk.

# ZipCodeValidator

invalidCharErrorZCV=Postnummeret indeholder ugyldige tegn.
invalidDomainErrorZCV=Domæneparameteren er ugyldig. Den skal enten være 'Kun USA' eller 'USA eller Canada'.
wrongCAFormatError=Det canadiske postnummer skal have formatet 'A1B 2C3'.
wrongLengthErrorZCV=Postnummeret skal bestå af 5 cifre eller 5+4 cifre.
wrongUSFormatError=Postnummeret plus de fire cifre skal have formatet '12345-6789'.
invalidFormatCharsZCV=Parameteren allowedFormatChars er ugyldig. Alfanumeriske tegn tillades ikke (a-å A-Å 0-9).


# Developer RTE Section

# Shared

invalidFormatChars=Parameteren allowedFormatChars er ugyldig. Den må ikke indeholde cifre.

# CreditCardValidator

missingCardType=Den værdi, der valideres, indeholder ikke egenskaben cardType.
missingCardNumber=Den værdi, der valideres, indeholder ikke egenskaben cardNumber.
CNSAttribute=Attributten cardNumberSource, '{0}', kan ikke have typen Streng.
CTSAttribute=Attributten cardTypeSource, '{0}', kan ikke have typen Streng.

# DateValidator

DSAttribute=Attributten daySource, '{0}', kan ikke have typen Streng.
MSAttribute=Attributten monthSource, '{0}', kan ikke have typen Streng.
YSAttribute=Attributten yearSource, '{0}', kan ikke have typen Streng.

# Validator

fieldNotFound=Feltet '{0}' blev ikke fundet.
SAttribute=Kildeattributten, '{0}', kan ikke have typen Streng.
SAttributeMissing=Kildeattributten skal være angivet, når egenskabsattributten er angivet.
PAttributeMissing=Egenskabsattributten skal være angivet, når kildeattributten er angivet.
