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

# ServerConfig
unknownDestination = Unbekanntes Ziel '{0}'.
destinationWithInvalidMessageType = Ziel '{0}' kann Meldungen des Typs '{1}' nicht abwickeln.
unknownDestinationForService = Unbekanntes Ziel '{1}' für Dienst mit ID '{0}'.
noServiceForMessageType = Zur Verarbeitung von Meldungen des Typs '{0}' sind keine Dienste konfiguriert.
unknownChannelWithId = Der Kanal '{0}' ist in der Konfiguration nicht vorhanden.
unknownChannelClass = Die angegebene Kanalklasse '{0}' wurde nicht gefunden.
noChannelForDestination = Ziel '{0}' ist nicht vorhanden oder es sind keine Kanäle für das Ziel definiert (und die Anwendung definiert keine Standardkanäle).

# Channel
noDestinationSpecified = Es muss ein Zielname angegeben werden.
connectTimedOut = Zeitlimit für Verbindungsversuch wurde überschritten.
noURLSpecified = Für den Kanal wurde keine URL angegeben.

# ChannelSet
cannotAddWhenConfigured = Einem ChannelSet mit konfiguriertem Ziel können keine Kanäle hinzugefügt werden.
cannotRemoveWhenConfigured = Aus einem ChannelSet mit einem konfigurierten Ziel können keine Kanäle entfernt werden.
noAvailableChannels = Es sind keine Kanäle verfügbar.
sendFailed = Sendevorgang ist fehlgeschlagen.
cannotConnectToDestination = Mit dem Ziel der Meldung konnte keine Verbindung hergestellt werden.
cannotAddNullIdChannelWhenClustered = Ein Kanal mit ungültiger ID kann ChannelSet nicht hinzugefügt werden, wenn die in Clustern gebündelte Eigenschaft 'true' lautet.
cannotSetClusteredWithdNullChannelIds = Die in Clustern gebündelte Eigenschaft von ChannelSet kann nicht zu 'true' geändert werden, wenn es Kanäle mit NULL-IDs enthält. 

# AbstractConsumer
resubscribeIntervalNegative = Für resubscribeInterval sind keine negativen Werte zulässig.
consumerSubscribeError = Fehler bei Verbraucher-Abonnierung
failedToSubscribe = Der Verbraucher konnte sein Ziel nicht abonnieren.

# MessageAgent
emptyDestinationName = {0}' ist kein gültiges Ziel.
destinationNotSet = Zum Senden von Meldungen muss das MessageAgent-Ziel festgelegt werden.

# AbstractProducer
reconnectIntervalNegative = Für reconnectInterval sind keine negativen Werte zulässig.
producerConnectError = Fehler bei Produzentenverbindung
failedToConnect = Der Produzent konnte keine Verbindung zu seinem Ziel herstellen.
producerSendError = Sendevorgang ist fehlgeschlagen.
producerSendErrorDetails = Der Produzent ist nicht verbunden und die Meldung kann nicht gesendet werden.
queuedMessagesNotAllowedDetails = Dem Produzenten wurde keine Meldungswarteschlange zugewiesen. Meldungen in Warteschlangen können daher nicht gesendet werden.

# MessageStore
messageQueueSendError = Sendevorgang ist fehlgeschlagen.
wrongMessageQueueForProducerDetails = Die Meldung stammt nicht aus dem Meldungsspeicher für diesen Produzenten.
lsoStorageNotAllowed = Der Meldungsspeicher kann nicht initialisiert werden, da die lokale Speicherung nicht zulässig ist. Vergewissern Sie sich, dass die lokale Speicherung für Flash Player aktiviert und ausreichend Speicherplatz konfiguriert ist.
messageQueueNotInitialized = Der Meldungsspeicher wurde nicht initialisiert.
messageQueueFailedInitialize = Die Initialisierung des Meldungsspeichers ist fehlgeschlagen.
couldNotAddMessageToQueue = Die Meldung konnte nicht im Meldungsspeicher abgelegt werden und der Produzent ist nicht angeschlossen. Weitere Informationen enthält der vom Meldungsspeicher gesendete FaultEvent.
couldNotRemoveMessageFromQueue = Die Meldung konnte nicht vor dem Senden aus dem Meldungsspeicher entfernt werden.
couldNotLoadCache = Der Zwischenspeicher konnte nicht in den Meldungsspeicher geladen werden.
couldNotSaveCache = Der Zwischenspeicher konnte nicht gespeichert werden.
couldNotClearCache = Der Zwischenspeicher konnte nicht geleert werden.
couldNotLoadCacheIds = Die Liste der Zwischenspeicher-IDs konnte nicht geladen werden.

# Session
emptySessionClientId = Die clientId einer Sitzung muss eine Länge aufweisen, die nicht null ist.

# AMFChannel
pollingIntervalNonPositive = Der pollingInterval-Wert für den Kanal muss positiv sein.
pollingRequestNotAllowed = Eine Abfrage wurde bei '{0}' angefordert, obwohl Abfragen nicht aktiviert sind.
invalidURL = Ungültige URL

# StreamingAMFChannel
pollingNotSupportedAMF = StreamingAMFChannel unterstützt kein Polling.

# DirectHTTPChannel
noURIAllowed = Fehler bei DirectHTTPChannel. Es kann keine URI festgelegt werden.
authenticationNotSupported = Authentifizierung wird bei DirectHTTPChannel nicht unterstützt (kein Proxy).
httpRequestError = HTTP-Anforderungsfehler
httpRequestError.details = Fehler: {0}
securityError = Sicherheitsfehler beim Zugriff auf die URL
securityError.details = Ziel: {0}

# AMFXDecoder
noAMFXBody = Ungültiges AMFX-Paket. Meldungstext wurde nicht gefunden.
unsupportedAMFXVersion = Nicht unterstützte AMFX-Version: {0}
noAMFXNode = Ungültiges AMFX-Paket. Der Inhalt muss mit einem <amfx>-Knoten beginnen.
AMFXTraitsNotFirst = Ungültiges Objekt. Der erste Eintrag in einem Objekt muss ein einzelner Satz Eigenschaften sein.
errorReadingIExternalizable = Beim Lesen von IExternalizable ist ein Fehler aufgetreten. {0}
notImplementingIExternalizable = Klasse {0} muss flash.util.IExternalizable implementieren.
unknownReference = Unbekannte Referenz {0}
referenceMissingId = Eine Referenz muss eine ID haben.
unknownStringReference = Unbekannte String-Referenz {0}
unknownTraitReference = Unbekannte Eigenschaftsreferenz {0}

# HttpRequestMessage
invalidRequestMethod = Ungültige Methode angegeben.

# MessageResponder
requestTimedOut = Zeitlimit für die Anforderung wurde überschritten.
requestTimedOut.details = Das Anforderungszeitlimit für die gesendete Meldung wurde erreicht, aber es ging keine Antwort vom Server ein.
deliveryInDoubt = Kanal getrennt
deliveryInDoubt.details = Der Kanal wurde vor dem Eingang einer Bestätigung getrennt.

# HTTPChannel
##httpRequestError
##httpRequestError.details
##securityError
##securityError.details
ackFailed = Es ist keine Meldungsbestätigung eingegangen.
ackFailed.details = Die Meldung '{0}' wurde erwartet, aber '{1}' wurde empfangen.
noAckMessage = Keine Bestätigungsmeldung erhalten.
noAckMessage.details = Erwartet wurde mx.messaging.messages.AcknowledgeMessage. Empfangen wurde {0}.

# StreamingHTTPChannel
pollingNotSupportedHTTP = StreamingHTTPChannel unterstützt kein Polling.

# NetConnectionChannel
##ackFailed
##ackFailed.details
##noAckMessage
##noAckMessage.details
noErrorForMessage = Keinen Fehler für die Meldung erhalten.
noErrorForMessage.details = Die Meldung '{0}' wurde erwartet, aber '{1}' wurde empfangen.
receivedNull = NULL empfangen.
