###############################################################################
# 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) ---------------
copyingTask=Copying from {0} to {1}
unZippingTask=Unzipping {0}
expandingTask=Expanding {0}
savingTask=Saving {0}
deletingTask=Deleting {0}
copyingTask=File copied successfully to {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

# --------------- 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}.
errorCopyingFile=Error copying file to {0}: {1}
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

# null launchable
nullLaunchableClient=Do nothing
nullLaunchableClientDescription=Do not launch anything after starting the server.

canStartOk=The server can be started.
canStopOk=The server can be started.
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.
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.