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


keywordNotAllowed=\u201e${keyword}\u201c nicht zul\u00e4ssig
classDefinitionNotAllowed=Klassendefinition nicht zul\u00e4ssig
expressionNotSupported=Ausdruck nicht unterst\u00fctzt
functionDefinitionNotAllowed=Funktionsdefinition nicht zul\u00e4ssig
interfaceDefinitionNotAllowed=Schnittstellendefinition nicht zul\u00e4ssig
labelsNotAllowed=Bezeichnungen nicht zul\u00e4ssig
literalObjectsNotSupported=Literalobjekte nicht unterst\u00fctzt
nullPointerException=Auf eine Eigenschaft oder Methode eines Nullobjektverweises kann nicht zugegriffen werden
StatementListNodeWIthMoreThanOneItem=Ein StatementListNode mit mehr als einem Element?
typeNotExpected=Unerwarteter Typ
unrecognizedBinaryOperator=nicht erkannter Bin\u00e4roperator
unrecognizedUnaryOperator=nicht erkannter Un\u00e4roperator
unsupportedExpression=Nicht unterst\u00fctzter Ausdruck
whatIsDocCommentNode=nicht sicher, was ein DocCommentNode ist
whatIsMetaDataNode=nicht sicher, was ein MetaDataNode ist
xmlLiteralsNotSupported=XML-Literale werden nicht unterst\u00fctzt
binaryProgramNodeUnexpected=BinaryProgramNode nicht erwartet
noSuchVariable = Variable existiert nicht: ${arg2}
typeError = Typfehler
