###############################################################################
# Copyright (c) 2000, 2003 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
