###############################################################################
# Copyright (c) 2000, 2008 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
### Boot plugin message catalog

### Platform Configuration
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}\"

InstalledSiteParser_UnableToCreateURL= Internal Error. Unable to create URL from \"{0}\".
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

ConfigurationActivator_createConfig=Cannot create configuration in {0}
ConfigurationParser_cannotLoadSharedInstall=Could not load from shared install
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_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_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

PluginParser_plugin_no_id = Plugin does not have a valid identifier: {0}
PluginParser_plugin_no_version = Plugin does not have a valid version: {0}
XMLPrintHandler_unsupportedNodeType=Unsupported XML Node Type.
