################################################################################
##
##  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= Die Farbe '${color}' wird nicht unterst\u00fctzt.
Descriptor.FunctionNotSupported= Die Funktion '${function}' wird nicht unterst\u00fctzt.
Descriptor.InvalidFormat= Ung\u00fcltiges Format.
Descriptor.ValueNotSupported= CSS-Wert f\u00fcr '${value}' wird nicht unterst\u00fctzt.
Descriptor.UnparsableCSS= Zeichen im CSS konnten nicht analysiert werden.
FontFaceRule.IgnoredDescriptor= ${descriptor}' wird innerhalb von @font-face ignoriert.
FontFaceRule.UnicodeRangeNotSupported = Unicode-Bereich kann f\u00fcr integrierte SWF-Schriften nicht angegeben werden.
StyleParser.DeprecatedWarning=${var}' ist ung\u00fcltig seit ${since}. Verwenden Sie '${replacement}'.
StyleParser.StyleSheetInvalidCharset=@charset-Regel enth\u00e4lt die ung\u00fcltige oder nicht unterst\u00fctzte Zeichensatzcodierung ${charsetName}. Im Stylesheet ${stylePath} wurde ein Problem gefunden.
StyleParserErrorTranslator.UnableToParse=CSS-Datei kann nicht geparst werden.
StyleParserErrorTranslator.InvalidIdentifierStartChar=Ung\u00fcltiges Zeichen in CSS gefunden. Schlie\u00dfen Sie die Namen von Schriftartenfamilien in Anf\u00fchrungszeichen ein (z.\u00a0B. '_sans').
StyleParserErrorTranslator.InvalidCSSSyntax=Ung\u00fcltige CSS-Syntax (Unerwartetes ${token}).
StyleParserErrorTranslator.InvalidCSSSyntaxToken=Ung\u00fcltige CSS-Syntax (Unerwartetes Token: '${token}').
StyleParserErrorTranslator.InvalidCSSSyntaxUnits=Ung\u00fcltige CSS-Syntax (Unerwartete ${token}-Einheiten).
StyleParserErrorTranslator.InvalidCSSSyntaxArray=Ung\u00fcltige CSS-Syntax (Unerwartetes Token: '${token}'). Um Stile des Typs Array festzulegen, verwenden Sie eine kommagetrennte Liste.  Bespiel: { foo: Rot, Blau, Gr\u00fcn }.



