###############################################################################
# Copyright (c) 2004 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
###############################################################################
pluginName=Apache Tomcat UI Support
providerName=Eclipse.org

# --------------- Editors ---------------

# General text used in both editors
editorRemove=Remove
editorAdd=Add...
editorEdit=Edit...

# --- Configuration Editor ---
configurationEditorWebModulesPage=Modules
configurationEditorWebModulesPageTitle=Web Modules
configurationEditorWebModulesSection=Web Modules
configurationEditorWebModulesDescription=Configure the Web Modules on this server.
configurationEditorMimeMappingsSection=MIME Mappings
configurationEditorMimeMappingsDescription=Configure MIME type mappings.
configurationEditorPortsSection=Ports
configurationEditorPortsDescription=Modify the server ports.

# Fields
configurationEditorPortNameColumn=Port Name
configurationEditorPortValueColumn=Port Number
configurationEditorPathColumn=Path
configurationEditorDocBaseColumn=Document Base
configurationEditorProjectColumn=Module
configurationEditorReloadColumn=Auto Reload
configurationEditorProjectMissing={0} missing
configurationEditorReloadEnabled=Enabled
configurationEditorReloadDisabled=Disabled
configurationEditorAddProjectModule=Add Web Module...
configurationEditorAddExternalModule=Add External Web Module...

# Add/Edit Mime Mapping dialog
configurationEditorMimeMapppingDialogTitleEdit=Edit MIME Mapping
configurationEditorMimeMapppingDialogTitleAdd=Add MIME Mapping
configurationEditorMimeMapppingDialogMimeType=MIME &type:
configurationEditorMimeMapppingDialogMimeExtension=MIME &extension:

# Add/Edit Web Module dialog
configurationEditorWebModuleDialogTitleEdit=Edit Web Module
configurationEditorWebModuleDialogTitleAdd=Add Web Module
configurationEditorWebModuleDialogProjects=&Modules:
configurationEditorWebModuleDialogPath=P&ath:
configurationEditorWebModuleDialogDocumentBase=&Document base:
configurationEditorWebModuleDialogReloadEnabled=Auto &reloading enabled
configurationEditorWebModuleDialogSelectDirectory=Select the Web module directory.


# --- Server Editor ---
serverEditorGeneralSection=Server
serverEditorGeneralDescription=Enter settings for the server.

# Fields
serverEditorSecure=Enable security
serverEditorDebugMode=Enable Tomcat debug mode (v4.x and above only)
serverEditorTestEnvironment=Run modules directly from the workspace (do not modify the Tomcat installation)


# --------------- General UI ---------------

runtimeName=Na&me:
browse=B&rowse...
installDir=Tomcat installation &directory:
installedJRE=&JRE:
installedJREs=&Installed JREs...
selectInstallDir=Select Tomcat installation directory.
runtimeDefaultJRE=Workbench default JRE

# New Tomcat server wizard
wizardTitle=Tomcat Server
wizardDescription=Specify the installation directory
