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

htmlManagerServlet.appsAvailable=Verf\u00fcgbar
htmlManagerServlet.appsName=Anzeigename
htmlManagerServlet.appsPath=Kontext Pfad
htmlManagerServlet.appsReload=Neu laden
htmlManagerServlet.appsUndeploy=Entfernen
htmlManagerServlet.appsExpire=L\u00f6sche Sitzungen
htmlManagerServlet.appsSessions=Sitzungen
htmlManagerServlet.appsStart=Start
htmlManagerServlet.appsStop=Stop
htmlManagerServlet.appsTasks=Kommandos
htmlManagerServlet.appsTitle=Anwendungen
htmlManagerServlet.expire.explain=mit Inaktivit\u00e4t &ge;
htmlManagerServlet.expire.unit=Minuten
htmlManagerServlet.helpHtmlManager=Hilfeseite HTML Manager (englisch)
htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
htmlManagerServlet.helpManager=Hilfeseite Manager (englisch)
htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
htmlManagerServlet.deployButton=Installieren
htmlManagerServlet.deployConfig=XML Konfigurationsdatei URL:
htmlManagerServlet.deployPath=Kontext Pfad (optional):
htmlManagerServlet.deployServer=Verzeichnis oder WAR Datei auf Server installieren
htmlManagerServlet.deployTitle=Installieren
htmlManagerServlet.deployUpload=Lokale WAR Datei zur Installation hochladen
htmlManagerServlet.deployUploadFail=FEHLER - Hochladen zur Installation fehlgeschlagen, Ausnahme: {0}
htmlManagerServlet.deployUploadFile=WAR Datei ausw\u00e4hlen
htmlManagerServlet.deployUploadNotWar=FEHLER - Hochgeladene Datei \"{0}\" muss ein .war sein
htmlManagerServlet.deployUploadNoFile=FEHLER - Hochladen fehlgeschlagen, keine Datei vorhanden
htmlManagerServlet.deployUploadWarExists=FEHLER - WAR Datei \"{0}\" existiert bereits auf Server
htmlManagerServlet.deployWar=WAR oder Verzeichnis URL:
htmlManagerServlet.list=Anwendungen auflisten
htmlManagerServlet.manager=Manager
htmlManagerServlet.messageLabel=Nachricht:
htmlManagerServlet.serverJVMVendor=JVM Hersteller
htmlManagerServlet.serverJVMVersion=JVM Version
htmlManagerServlet.serverOSArch=OS Architektur
htmlManagerServlet.serverOSName=OS Name
htmlManagerServlet.serverOSVersion=OS Version
htmlManagerServlet.serverTitle=Server Informationen
htmlManagerServlet.serverVersion=Tomcat Version
htmlManagerServlet.title=Tomcat Webanwendungs-Manager
managerServlet.alreadyContext=FEHLER - Anwendung existiert bereits f\u00fcr Kontext Pfad {0}
managerServlet.deployed=OK - Anwendung mit Kontext Pfad {0} installiert
managerServlet.exception=FEHLER - Ausnahme aufgetreten {0}
managerServlet.invalidPath=FEHLER - Ung\u00fcltiger Kontext Pfad {0} angegeben
managerServlet.listed=OK - Auflistung der Webanwendungen f\u00fcr virtuellen Server {0}
managerServlet.listitem={0}:{1}:{2}:{3}
managerServlet.noCommand=FEHLER - Es wurde kein Kommando angegeben
managerServlet.noContext=FEHLER - Es existiert kein Kontext f\u00fcr Pfad {0}
managerServlet.noGlobal=FEHLER - Keine globalen JNDI Ressourcen verf\u00fcgbar
managerServlet.noSelf=FEHLER - Manager-Kommandos k\u00f6nnen nicht auf die Manager-Anwendung selbst angewendet werden
managerServlet.noWrapper=Container hat setWrapper() f\u00fcr dieses Servlet nicht aufgerufen
managerServlet.reloaded=OK - Anwendung mit Kontext Pfad {0} neu geladen
managerServlet.resourcesAll=OK - Auflistung globaler Ressourcen (alle Typen)
managerServlet.resourcesType=OK - Auflistung globaler Ressourcen von Typ {0}
managerServlet.saveFail=FEHLER - Speichern der Konfiguration fehlgeschlagen: {0}
managerServlet.sessiondefaultmax=Voreingestellter Sitzungsablauf nach maximal {0} Minuten Inaktivit\u00e4t
#TODO: Please review the following three messages. These are displayed when "Expire sessions" button is pressed in the Manager webapp:
managerServlet.sessiontimeout={0} Minuten: {1} Sitzungen
managerServlet.sessiontimeout.unlimited=unlimited Minuten: {0} Sitzungen
managerServlet.sessiontimeout.expired={0} Minuten: expired {1} Sitzungen
managerServlet.sessions=OK - Sitzungs-Informationen f\u00fcr Anwendung mit Kontext Pfad {0}
managerServlet.started=OK - Anwendung mit Kontext Pfad {0} gestartet
managerServlet.startFailed=FEHLER - Anwendung mit Kontext Pfad {0} konnte nicht gestartet werden
managerServlet.stopped=OK - Anwendung mit Kontext Pfad {0} gestoppt
managerServlet.undeployed=OK - Anwendung mit Kontext Pfad {0} entfernt
managerServlet.unknownCommand=FEHLER - Unbekanntes Kommando {0}
statusServlet.title=Server Status
statusServlet.complete=Ausf\u00fchrlicher Server Status
