###############################################################################
# Copyright (c) 2004, 2005 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

# runtime target
target32runtime=Tomcat v3.2 runtime
target40runtime=Tomcat v4.0 runtime
target41runtime=Tomcat v4.1 runtime
target50runtime=Tomcat v5.0 runtime
target55runtime=Tomcat v5.5 runtime

# --------------- Tasks (progress monitors) ---------------
savingTask=Saving...
loadingTask=Loading...
updatingConfigurationTask=Updating run-time configuration...
publishServerTask=Publishing to server...
publishConfigurationTask=Publishing the configuration...
publisherPublishTask=Publishing {0}...
fixModuleContextRoot=Update context root for Web module {0}
fixModuleContextRootDescription=Update the context root of the Web module to match the current settings

publishContextConfigTask=Publishing META-INF/context.xml configurations...
checkingContextTask=Checking Context {0} for context.xml...
savingContextConfigTask=Saving context configuration updates...
serverPostProcessingComplete=Context configurations added.

cleanupServerTask=Removing obsolete files from server...
detectingRemovedProjects=Preparing list of removed projects...
deletingContextFilesTask=Deleting obsolete context files from server...
deletingContextFile=Deleting obsolete context file {0}...
deletedContextFile=Context file {0} removed
runtimeDirPrepared=Runtime directory prepared
copyingTask=Copying from {0} to {1}
deletingTask=Deleting {0}
errorCopyingFile=Error copying file to {0}: {1}
errorPublish=Publishing failed with multiple errors

# Editor commands (used in undo/redo menus)
configurationEditorActionAddMimeMapping=MIME Mapping Addition
configurationEditorActionModifyMimeMapping=MIME Mapping Change
configurationEditorActionRemoveMimeMapping=MIME Mapping Removal
configurationEditorActionAddWebModule=Web Module Addition
configurationEditorActionModifyWebModule=Web Module Change
configurationEditorActionRemoveWebModule=Web Module Removal
configurationEditorActionModifyPort=Port Number Change
configurationEditorActionEditWebModulePath=Web Module Path Change

# --------------- General ---------------
canAddModule=Web module can be added to the server.
portServer=Tomcat admin port
portUnknown=unknown port

# --------------- Errors and Info ---------------
errorVersionEmpty=The Tomcat version must be specified.
errorUnknownVersion=Unknown version of Tomcat was specified.
errorInstallDirEmpty=The Tomcat installation directory may not be empty.
errorInstallDirWrongVersion=The name of the Tomcat installation directory indicates it is for different version of Tomcat.
errorInstallDirDoesNotExist=The specified Tomcat installation directory does not exist.
errorInstallDirMissingFile=The Tomcat installation directory is not valid. It is missing expected file or folder {0}.
errorInstallDirMissingFile2=The Tomcat installation directory is not valid. It is missing expected file or folder {0} (alternate name {1}).
errorInstallDirMissingFile3=The Tomcat installation directory is not valid. It is missing expected file or folder {0} (alternate names {1}).
errorInstallDirTrailingSlash=The Tomcat installation directory should not have a trailing slash.
errorJRE=The JRE could not be found. Edit the server and change the JRE location.
errorJRETomcat60=Tomcat version 6.0 requires J2SE 5.0 or later.  Change the JRE to one that meets this requirement.
errorPortInvalid=The server cannot be started because one or more of the ports are invalid. Open the server editor and correct the invalid ports.
errorPortInUse=Port {0} required by {1} is already in use. The server may already be running in another process, or a system process may be using the port. \
  To start this server you will need to stop the other process or change the port number(s).
errorPortsInUse=Several ports ({0}) required by {1} are already in use. The server may already be running in another process, or a system process may be using the port. \
  To start this server you will need to stop the other process or change the port number(s).
# the {0} in the following two lines will be replaced with a location (path) of the missing or corrupt server configuration
errorNoConfiguration=The Tomcat server configuration at {0} is missing. Check the server for errors.
errorCouldNotLoadConfiguration=Could not load the Tomcat server configuration at {0}. The configuration may be corrupt or incomplete.
errorCouldNotSaveConfiguration=Could not save the Tomcat server configuration: {0}.
errorPublishConfiguration=Could not publish server configuration: {0}.
errorCouldNotDeleteContextFile=Could not delete obsolete context file: {0}
errorCleanupServer=Could not clean server of obsolete files: {0}
errorWebModulesOnly=Tomcat only supports running J2EE Web modules.
errorNoRuntime=Cannot add modules because there is no runtime associated with the server.
errorSpec32=Tomcat version 3.2 only supports J2EE 1.2 Web modules
errorSpec40=Tomcat version 4.0 only supports J2EE 1.2 and 1.3 Web modules
errorSpec41=Tomcat version 4.1 only supports J2EE 1.2 and 1.3 Web modules
errorSpec50=Tomcat version 5.0 only supports J2EE 1.2, 1.3, and 1.4 Web modules
errorSpec55=Tomcat version 5.5 only supports J2EE 1.2, 1.3, and 1.4 Web modules
errorSpec60=Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
errorDuplicateContextRoot=Two or more Web modules defined in the configuration have the same context root ({0}). \
  To start this server you will need to remove the duplicate(s).
errorCouldNotLoadContextXml=Could not load the context configuration for the {0} context due to a syntax error or other exception.
errorNoProfiler=Could not launch in profiling mode because no profilers are configured.
errorXMLServiceNotFound=Service \"{0}\" was not found.
errorXMLNoService=No Service was found.
errorXMLEngineNotFound=Engine element not found under Service \"{0}\".
errorXMLHostNotFound=Host \"{0}\" was not found under Engine \"{1}\" and Service \"{2}\".
errorXMLContextNotFoundPath=Context with path \"{0}\" was not found under Service \"{1}\", Engine \"{2}\", and Host \"{3}\".
errorXMLContextMangerNotFound=ContextManager element was not found.
errorXMLContextNotFoundPath32=Context with path \"{0}\" was not found under ContextManager.

warningJRE=Tomcat requires a Java SDK in order to compile JSP files. Ensure that the JRE preference settings point to an SDK install location.
warningCantReadConfig=Cannot read the Tomcat configuration.

# Actions (used in undo/redo menus)
serverEditorActionSetSecure=Tomcat Security Option Change
serverEditorActionSetDebugMode=Tomcat Debug Option Change
serverEditorActionSetServerDirectory=Tomcat Server Path Change
serverEditorActionSetDeployDirectory=Tomcat Deploy Path Change
