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

ok = OK

### URL
url.badVariant=Unsupported \"platform:\" protocol variation {0}
url.invalidURL=Invalid "platform:" URL {0}
url.createConnection=Unable to create connection {0}
url.noaccess=Unable to access URL as local {0}.

### Platform Configuration
cfig.inUse=\nConfiguration file \"{0}\" is in use by another instance of the platform, \n\
	or there was a failure in deleting the old lock file.  If no other platform instances are running, \n\
	delete file \"{1}\" and try starting the platform again.
cfig.failCreateLock=Failed to create lock for configuration file \"{0}\"
cfig.badUrlArg=Bad -configuration argument \"{0}\"
cfig.unableToLoad.incomplete=Unable to load {0}
cfig.unableToLoad.noURL=Configuration file location not specified
cfig.unableToSave.noURL=Configuration file save location not specified
cfig.unableToSave=Unable to save configuration file \"{0}\"
cfig.badVersion=Unsupported configuration version \"{0}\"
cfg.unableToCreateConfig.ini = Unable to create config.ini

platform.running=The Platform is already running.
platform.mustNotBeRunning=The Platform must not be running.
platform.notRunning=The Platform is not running.

ignore.plugin=Ignoring invalid plug-in location: {0}.
application.notFound=Application not found: {0}.
error.fatal=Fatal Error: Unable to determine platform installation URL {0}.
error.boot=Fatal Error: Unable to locate boot.xml file for executing org.eclipse.core.boot.
error.runtime=Fatal Error: Unable to locate matching org.eclipse.core.runtime plug-in.
error.xerces=Fatal Error: Unable to locate matching org.apache.xerces plug-in.
error.badNL=Bad value: \"{0}\" for NL. Using system default.

InstalledSiteParser.DirectoryDoesNotExist=The directory \"{0}\" does not exist on the file system.
InstalledSiteParser.UnableToCreateURL= Internal Error. Unable to create URL from \"{0}\".
InstalledSiteParser.FileDoesNotExist= The file \"{0}\" does not exist.
InstalledSiteParser.UnableToCreateURLForFile= Unable to create URL from \"{0}\".
InstalledSiteParser.ErrorParsingFile= Unable to parse file \"{0}\".
InstalledSiteParser.ErrorAccessing= Unable to access file \"{0}\".
InstalledSiteParser.date = Invalid date attribute {0}
BundleManifest.noVersion = {0} attribute not found in manifest for bundle \"{1}\".  Bundle will be ignored.

FeatureParser.IdOrVersionInvalid= Error parsing feature stream. The unique identifier or the version is null or empty: unique identifier=\"{0}\" version=\"{1}\".

BundleGroupProvider=Update Manager Configurator
ProductProvider=Update Manager Configurator

AboutInfo.notSpecified=Unspecified
ConfigurationActivator.initialize=Cannot initialize the Update Configurator
ConfigurationActivator.createConfig=Cannot create configuration in {0}
ConfigurationActivator.uninstallBundle=Could not uninstall unused bundle {0} 
ConfigurationParser.cannotLoadSharedInstall=Could not load from shared install
ConfigurationActivator.installBundle=Could not install bundle {0}
PluginEntry.versionError=Unable to create versioned identifier: {0} {1}

IniFileReader.MissingDesc = Cannot find plugin for feature {0}
IniFileReader.OpenINIError = Cannot open branding file {0}
IniFileReader.OpenPropError = Cannot open branding properties file {0}
IniFileReader.OpenMapError = Cannot open mapping file {0}
IniFileReader.ReadIniError = Error reading branding file {0}
IniFileReader.ReadPropError = Error reading branding properties file {0}
IniFileReader.ReadMapError = Error reading mapping files {0}

SiteEntry.computePluginStamp = Cannot compute plugins change stamp for site {0} because it does not support plugin detection.
SiteEntry.cannotFindFeatureInDir=Unable to find feature.xml in directory: {0}
SiteEntry.duplicateFeature=Duplicate feature found on site {0} : {1}
SiteEntry.pluginsDir = {0} is not a valid plugins directory.
PlatformConfiguration.expectingPlatformXMLorDirectory=Either specify the configuration directory or a file named platform.xml 
PlatformConfiguration.cannotBackupConfig=Cannot backup current configuration
PlatformConfiguration.cannotCloseStream=Could not close output stream for 
PlatformConfiguration.cannotCloseTempFile=Could not close output stream for temp file 
PlatformConfiguration.cannotRenameTempFile=Could not rename configuration temp file
PlatformConfiguration.cannotLoadConfig=Cannot load configuration from 
PlatformConfiguration.cannotLoadDefaultSite=Cannot load default site 
PlatformConfiguration.cannotFindConfigFile=Platform configuration file cannot be found
PlatformConfiguration.cannotSaveNonExistingConfig=Configuration cannot be saved because it does not exist
HttpResponse.rangeExpected=Server returned full content instead of a range.
HttpResponse.wrongRange=Server returned wrong range
