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

Descriptor.ColorNotSupported= Farven '${color}' underst\u00f8ttes ikke.
Descriptor.FunctionNotSupported= Funktionen '${function}' underst\u00f8ttes ikke.
Descriptor.InvalidFormat= Ugyldigt format.
Descriptor.ValueNotSupported= CSS-v\u00e6rdien af '${value}' underst\u00f8ttes ikke.
Descriptor.UnparsableCSS= tegn i CSS kunne ikke fortolkes.
FontFaceRule.IgnoredDescriptor= '${descriptor}' ignoreres inde i @font-face.
FontFaceRule.UnicodeRangeNotSupported = Unicode-interval kan ikke angives for indbyggede SWF-skrifttyper.
StyleParser.DeprecatedWarning='${var}' har v\u00e6ret frar\u00e5det siden ${since}. Brug '${replacement}'.
StyleParser.StyleSheetInvalidCharset=@charset-reglen indeholder en ugyldig eller ikke-underst\u00f8ttet charset-kodning, ${charsetName}. Problemet blev fundet i typografiarket ${stylePath}
StyleParserErrorTranslator.UnableToParse=CSS-filen kunne ikke fortolkes.
StyleParserErrorTranslator.InvalidIdentifierStartChar=Der er ugyldige tegn i CSS-koden. Brug anf\u00f8rselstegn omkring navne p\u00e5 skrifttyper som '_sans'.
StyleParserErrorTranslator.InvalidCSSSyntax=Ugyldig CSS-syntaks (Uventet ${token}).
StyleParserErrorTranslator.InvalidCSSSyntaxToken=Ugyldig CSS-syntaks (Uventet token: '${token}').
StyleParserErrorTranslator.InvalidCSSSyntaxUnits=Ugyldig CSS-syntaks (Uventede ${token}-enheder).
StyleParserErrorTranslator.InvalidCSSSyntaxArray=Ugyldig CSS-syntaks (Uventet token: '${token}'). Brug en kommasepareret liste til at definere typografitypen for Array.  For eksempel { foo: red, blue, green }.



