# 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=Running
htmlManagerServlet.appsName=Display Name
htmlManagerServlet.appsPath=Path
htmlManagerServlet.appsReload=Reload
htmlManagerServlet.appsUndeploy=Undeploy
htmlManagerServlet.appsVersion=Version
htmlManagerServlet.appsExpire=Expire sessions
htmlManagerServlet.appsSessions=Sessions
htmlManagerServlet.appsStart=Start
htmlManagerServlet.appsStop=Stop
htmlManagerServlet.appsTasks=Commands
htmlManagerServlet.appsTitle=Applications
htmlManagerServlet.noVersion=None specified
htmlManagerServlet.expire.explain=with idle &ge;
htmlManagerServlet.expire.unit=minutes
htmlManagerServlet.helpHtmlManager=HTML Manager Help
htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
htmlManagerServlet.helpManager=Manager Help
htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
htmlManagerServlet.deployButton=Deploy
htmlManagerServlet.deployConfig=XML Configuration file URL:
htmlManagerServlet.deployPath=Context Path (required):
htmlManagerServlet.deployServer=Deploy directory or WAR file located on server
htmlManagerServlet.deployTitle=Deploy
htmlManagerServlet.deployUpload=WAR file to deploy
htmlManagerServlet.deployUploadFail=FAIL - Deploy Upload Failed, Exception: {0}
htmlManagerServlet.deployUploadFile=Select WAR file to upload
htmlManagerServlet.deployUploadInServerXml=FAIL - War file \"{0}\" cannot be uploaded if context is defined in server.xml 
htmlManagerServlet.deployUploadNotWar=FAIL - File uploaded \"{0}\" must be a .war
htmlManagerServlet.deployUploadNoFile=FAIL - File upload failed, no file
htmlManagerServlet.deployUploadWarExists=FAIL - War file \"{0}\" already exists on server
htmlManagerServlet.deployWar=WAR or Directory URL:
htmlManagerServlet.diagnosticsLeak=Check to see if a web application has caused a memory leak on stop, reload or undeploy
htmlManagerServlet.diagnosticsLeakButton=Find leaks
htmlManagerServlet.diagnosticsLeakWarning=This diagnostic check will trigger a full garbage collection. Use it with extreme caution on production systems.
htmlManagerServlet.diagnosticsTitle=Diagnostics
htmlManagerServlet.findleaksList=\
  The following web applications were stopped (reloaded, undeployed), but their\n\
  classes from previous runs are still loaded in memory, thus causing a memory\n\
  leak (use a profiler to confirm):\n
htmlManagerServlet.findleaksNone=No web applications appear to have triggered a memory leak on stop, reload or undeploy.
htmlManagerServlet.list=List Applications
htmlManagerServlet.manager=Manager
htmlManagerServlet.messageLabel=Message:
htmlManagerServlet.noManager=-
htmlManagerServlet.serverJVMVendor=JVM Vendor
htmlManagerServlet.serverJVMVersion=JVM Version
htmlManagerServlet.serverOSArch=OS Architecture
htmlManagerServlet.serverOSName=OS Name
htmlManagerServlet.serverOSVersion=OS Version
htmlManagerServlet.serverTitle=Server Information
htmlManagerServlet.serverVersion=Tomcat Version
htmlManagerServlet.title=Tomcat Web Application Manager
managerServlet.alreadyContext=FAIL - Application already exists at path {0}
managerServlet.alreadyDocBase=FAIL - Directory {0} is already in use
managerServlet.configured=OK - Deployed application from context file {0}
managerServlet.deleteFail=FAIL - Unable to delete [{0}]. The continued presence of this file may cause problems.
managerServlet.deployed=OK - Deployed application at context path {0}
managerServlet.deployFailed=FAIL - Failed to deploy application at context path {0}
managerServlet.deployedButNotStarted=FAIL - Deployed application at context path {0} but context failed to start
managerServlet.exception=FAIL - Encountered exception {0}
managerServlet.findleaksFail=FAIL - Find leaks failed: Host not instance of StandardHost
managerServlet.invalidPath=FAIL - Invalid context path {0} was specified
managerServlet.invalidWar=FAIL - Invalid application URL {0} was specified
managerServlet.listed=OK - Listed applications for virtual host {0}
managerServlet.listitem={0}:{1}:{2}:{3}
managerServlet.mkdirFail=FAIL - Unable to create directory [{0}]
managerServlet.noAppBase=FAIL - Cannot identify application base for context path {0}
managerServlet.noCommand=FAIL - No command was specified
managerServlet.noContext=FAIL - No context exists for path {0}
managerServlet.noDirectory=FAIL - Non-directory document base for path {0}
managerServlet.noDocBase=FAIL - Cannot undeploy document base for path {0}
managerServlet.noGlobal=FAIL - No global JNDI resources are available
managerServlet.noManager=FAIL - No manager exists for path {0}
managerServlet.noReload=FAIL - Reload not supported on WAR deployed at path {0}
managerServlet.noRename=FAIL - Cannot deploy uploaded WAR for path {0}
managerServlet.noRole=FAIL - User does not possess role {0}
managerServlet.noSelf=FAIL - The manager can not reload, undeploy, stop, or undeploy itself
managerServlet.noWrapper=Container has not called setWrapper() for this servlet
managerServlet.notDeployed=FAIL - Context {0} is defined in server.xml and may not be undeployed
managerServlet.objectNameFail=FAIL - Unable to register object name [{0}] for Manager Servlet
managerServlet.postCommand=FAIL - Tried to use command {0} via a GET request but POST is required
managerServlet.reloaded=OK - Reloaded application at context path {0}
managerServlet.resourcesAll=OK - Listed global resources of all types
managerServlet.resourcesType=OK - Listed global resources of type {0}
managerServlet.saveFail=FAIL - Configuration save failed: {0}
managerServlet.saved=OK - Server configuration saved
managerServlet.savedContext=OK - Context {0} configuration saved
managerServlet.sessiondefaultmax=Default maximum session inactive interval {0} minutes
managerServlet.sessiontimeout={0} minutes: {1} sessions
managerServlet.sessiontimeout.unlimited=unlimited time: {0} sessions
managerServlet.sessiontimeout.expired={0} minutes: {1} sessions were expired
managerServlet.sessions=OK - Session information for application at context path {0}
managerServlet.started=OK - Started application at context path {0}
managerServlet.startFailed=FAIL - Application at context path {0} could not be started
managerServlet.stopped=OK - Stopped application at context path {0}
managerServlet.undeployed=OK - Undeployed application at context path {0}
managerServlet.unknownCommand=FAIL - Unknown command {0}
managerServlet.userDatabaseError=FAIL - Cannot resolve user database reference
managerServlet.userDatabaseMissing=FAIL - No user database is available

statusServlet.title=Server Status
statusServlet.complete=Complete Server Status
