###############################################################################
# Copyright (c) 2004, 2007 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
###############################################################################

#External Messages for EN locale

#EclipseAdaptor messages
ECLIPSE_ADAPTOR_ERROR_XML_SERVICE=Error registering XML parser services.
ECLIPSE_ADAPTOR_RUNTIME_ERROR=An unexpected runtime error has occurred.
ECLIPSE_ADAPTOR_EXITING=The application will terminate.

#EclipseStarter messages
ECLIPSE_STARTUP_BUNDLE_NOT_FOUND=Bundle {0} not found.
ECLIPSE_STARTUP_ROOTS_NOT_RESOLVED=One or more bundles are not resolved because the following root constraints are not resolved:
ECLIPSE_STARTUP_ALL_NOT_RESOLVED=The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_RESOLVED=Bundle {0} was not resolved.
ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_ACTIVE=Bundle {0} is not active.
ECLIPSE_STARTUP_ERROR_NO_APPLICATION=Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
#Don't use double quotes in the ECLIPSE_STARTUP_ERROR_CHECK_LOG. (See bug 86085) 
ECLIPSE_STARTUP_ERROR_CHECK_LOG=An error has occurred. See the log file\n{0}.
ECLIPSE_STARTUP_ALREADY_RUNNING=Platform already running
ECLIPSE_STARTUP_NOT_RUNNING=Platform not running
ECLIPSE_STARTUP_STARTUP_ERROR=Startup error
ECLIPSE_STARTUP_APP_ERROR=Application error
ECLIPSE_STARTUP_SHUTDOWN_ERROR=Shutdown error
ECLIPSE_STARTUP_INVALID_PORT=Invalid console port: {0}
ECLIPSE_STARTUP_FAILED_FIND=Failed to find/start: {0}
ECLIPSE_STARTUP_FAILED_INSTALL=Error installing bundle: {0}
ECLIPSE_STARTUP_FAILED_UNINSTALL=Error uninstalling bundle: {0}
ECLIPSE_STARTUP_FAILED_START=Error starting bundle: {0}
ECLIPSE_STARTUP_FILEMANAGER_OPEN_ERROR=Error reading configuration: {0}
ECLIPSE_STARTUP_PROPS_NOT_SET=Cannot start without the following system properties set: {0}

#EclipseBundleData messages
ECLIPSE_DATA_MANIFEST_NOT_FOUND=Manifest not found: {0}
ECLIPSE_DATA_ERROR_READING_MANIFEST=Error reading manifest for bundle at the location: {0}

#Console extension
ECLIPSE_CONSOLE_NO_BUNDLE_SPECIFIED_ERROR=No bundle specified!.
ECLIPSE_CONSOLE_CANNOT_FIND_BUNDLE_ERROR=Cannot find bundle {0}.
ECLIPSE_CONSOLE_NO_CONSTRAINTS_NO_PLATFORM_ADMIN_MESSAGE=No unresolved constraints [PlatformAdmin service is not registered].
ECLIPSE_CONSOLE_NO_CONSTRAINTS=No unresolved constraints.
ECLIPSE_CONSOLE_OTHER_VERSION=Bundle {0} was picked instead.
ECLIPSE_CONSOLE_COMMANDS_HEADER=Eclipse Runtime commands.
ECLIPSE_CONSOLE_HELP_DIAG_COMMAND_DESCRIPTION=Displays unsatisfied constraints for the specified bundle(s).

#Bundle resolution messages
ECLIPSE_MISSING_OPTIONAL_REQUIRED_BUNDLE=Missing optionally required bundle {0}.
ECLIPSE_MISSING_REQUIRED_BUNDLE=Missing required bundle {0}.
ECLIPSE_MISSING_IMPORTED_PACKAGE=Missing imported package {0}.
ECLIPSE_MISSING_HOST=Missing host {0}.

#Conversion messages
ECLIPSE_CONVERTER_ERROR_CONVERTING=Error converting plugin at {0}.
ECLIPSE_CONVERTER_ERROR_CREATING_BUNDLE_MANIFEST=Error creating bundle manifest file for {0} at {1}.
ECLIPSE_CONVERTER_ERROR_PARSING_PLUGIN_MANIFEST=Error parsing plugin manifest file {0} at {1}.
ECLIPSE_CONVERTER_MISSING_ATTRIBUTE=Error parsing {0} manifest. Missing attribute \"{1}\" in element \"{2}\".
ECLIPSE_CONVERTER_PLUGIN_LIBRARY_IGNORED=Plugin library {0} ignored when creating manifest for {1}.
ECLIPSE_CONVERTER_NO_SAX_FACTORY=No SAX factory parser has been found.
ECLIPSE_CONVERTER_PARSE_UNKNOWNTOP_ELEMENT = Unknown element \"{0}\", found at the top level, ignored.
ECLIPSE_CONVERTER_FILENOTFOUND = Could not find a META-INF/MANIFEST.MF, plugin.xml or a fragment.xml in {0}.
parse_error=Error parsing manifest: {0}
parse_errorNameLineColumn=Error parsing manifest at \"{0}\" line \"{1}\" column \"{2}\": {3}

#Classloader messages
ECLIPSE_CLASSLOADER_CANNOT_GET_HEADERS=Error loading bundle manifest for {0}. Using default auto-activation settings.
ECLIPSE_CLASSLOADER_CONCURRENT_STARTUP=While loading class "{1}", thread "{0}" timed out waiting ({4}ms) for thread "{2}" to finish starting bundle "{3}". To avoid deadlock, thread "{0}" is proceeding but "{1}" may not be fully initialized.
ECLIPSE_CLASSLOADER_ACTIVATION=An error occurred while automatically activating bundle {0} ({1}).
ECLIPSE_CLASSLOADER_GENERATED_EXCEPTION=Generated exception.
ECLIPSE_CLASSLOADER_ALREADY_STOPPED= The class \"{0}\" cannot be loaded because the system is shutting down and the plug-in \"{1}\" has already been stopped.

#CachedManifest messages
ECLIPSE_CACHEDMANIFEST_UNEXPECTED_EXCEPTION=Unexpected exception occurred loading manifest for bundle at the location: {0}.

#BundleStopper messages
ECLIPSE_BUNDLESTOPPER_CYCLES_FOUND=Info: cycle(s) found while stopping bundles: {0}.
ECLIPSE_BUNDLESTOPPER_ERROR_STOPPING_BUNDLE=Error while stopping \"{0}\".

#Location message
ECLIPSE_CANNOT_CHANGE_LOCATION = Cannot change the location once it is set.

#NL Problem
error_badNL=Bad value: \"{0}\" for NL. Using system default.

#FileMananger messages
fileManager_cannotLock = Unable to create lock manager.
fileManager_couldNotSave = Could not save file table.
fileManager_updateFailed = File update failed on one or more files.
fileManager_illegalInReadOnlyMode = Cannot perform operation while in read-only mode.
fileManager_notOpen = Manager is not opened.

#Location messages
location_cannotLockNIO = An error occurred while locking file \"{0}\": \"{1}\". A common reason is that the file system or Runtime Environment does not support file locking for that location. Please choose a different location, or disable file locking passing {2} as a VM argument.
location_cannotLock = An error occurred while locking file \"{0}\".
