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

# --------------- Tasks (progress monitors) ---------------
savingTask=Saving {0}
deletingTask=Deleting {0}

taskPerforming=Performing Tasks
taskModifyModules=Adding and/or removing projects.

publishing=Publishing to {0}...
publishingStatus=Publishing results
publishingStop=Disconnecting from server

publishingModule=Publishing: {0}
publishedModule={0} published successfully

publishingCancelled=Publishing cancelled

jobStartingServer=Starting server - {0}
jobRestartingServer=Restarting server - {0}

# --------------- Misc UI ---------------

# Error Messages
errorPublishing=Could not publish to the server.
errorNoConfiguration=The server has no configuration.
errorLoading=Error loading from {0}.
errorSaving=Could not save to {0}.
errorModuleRestartFailed=Could not restart the module.
errorWorkingCopyTimestamp=Could not save because the file has been modified since the start of editting.
errorRuntimeName=Enter a name for the runtime.
errorDuplicateRuntimeName=Name is already in use.
errorStartTimeout=Timeout waiting for {0} to start. Server did not start after {1}s. 
errorStartFailed=Server {0} failed to start.

# Default server creation names
# {0} will be replaced by a number if the given name is already being used
defaultServerProjectName=Servers{0}
defaultRuntimeName={0}
defaultRuntimeName2={0} ({1})
defaultServerName={0} @ {1}
defaultServerName2={0} @ {1} ({2})
defaultServerName3={0}
defaultServerName4={0} ({1})

# Used when a name can't be found
defaultVendor=Basic
defaultVersion=Basic
moduleTypeUnknown=Unknown module

canStartOk=The server can be started.
canStopOk=The server can be stopped.
canRestartOk=The server can be restarted.
canPublishOk=The server can be published to.
canRestartModuleOk=The module can be restarted.
canStartErrorState=The server cannot be started because it is current starting or stopping.
errorLaunchMode=The server does not support the given launch mode.
errorRestartNotStarted=Cannot restart the server because it is not currently running.
errorPublishStarting=Cannot publish to the server because it is currently starting or stopping.
errorPublishNoRuntime=Cannot publish to the server because it is missing it's runtime.
errorPublishNoConfiguration=Cannot publish to the server because the configuration is missing.
errorStopAlreadyStopped=The server cannot be stopped because it is already stopped.
errorRestartModule=The module cannot be restarted.
