###############################################################################
# Copyright (c) 2000, 2006 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
###############################################################################
### Common runtime plugin messages

ok = OK

### metadata
meta_couldNotCreate = Error trying to create the platform metadata area: {0}.
meta_instanceDataUnspecified = The instance data location has not been specified yet.
meta_noDataModeSpecified = No instance data can be specified.
meta_notDir = Specified platform location \"{0}\" is not a directory.
meta_readonly = The platform metadata area could not be written: {0}.  By default the platform writes its content\nunder the current working directory when the platform is launched.  Use the -data parameter to\nspecify a different content area for the platform.
meta_pluginProblems = Problems occurred when invoking code from plug-in: \"{0}\".

### parsing/resolve
parse_doubleSeparatorVersion=Plug-in version identifier, \"{0}\", must not contain two consecutive separator characters.
parse_emptyPluginVersion=A plug-in version identifier must be non-empty.
parse_fourElementPluginVersion=Plug-in version identifier, \"{0}\", can contain a maximum of four components.
parse_numericMajorComponent=The major (1st) component of plug-in version identifier, \"{0}\", must be numeric.
parse_numericMinorComponent=The minor (2nd) component of plug-in version identifier, \"{0}\", must be numeric.
parse_numericServiceComponent=The service (3rd) component of plug-in version identifier, \"{0}\", must be numeric.
parse_oneElementPluginVersion=Plug-in version identifier, \"{0}\", must contain at least one component.
parse_postiveMajor=Plug-in version identifier, \"{0}\", must have a positive major (1st) component.
parse_postiveMinor=Plug-in version identifier, \"{0}\", must have a positive minor (2nd) component.
parse_postiveService=Plug-in version identifier, \"{0}\", must have a positive service (3rd) component.
parse_separatorEndVersion=Plug-in version identifier, \"{0}\", must not end with a separator character.
parse_separatorStartVersion=Plug-in version identifier, \"{0}\", must not start with a separator character.

### URL
url_badVariant = Unsupported \"platform:\" protocol variation \"{0}\".
url_createConnection = Unable to create connection on \"{0}\".
url_invalidURL = Invalid URL \"{0}\".
url_noOutput = Output is not supported for \"{0}\", location is read-only.
url_noaccess = Unhandled URL protocol \"{0}\".
url_resolveFragment = Unable to resolve fragment \"{0}\".
url_resolvePlugin = Unable to resolve plug-in \"{0}\".

activator_not_available = The bundle activator for the org.eclipse.equinox.common bundle is not available.
