###############################################################################
# Copyright (c) 2010 The Eclipse Foundation, Innoopract.
# 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:
#    The Eclipse Foundation - initial API and implementation
###############################################################################
# feature.properties
# contains externalized strings for feature.xml
# "%foo" in feature.xml corresponds to the key "foo" in this file
# java.io.Properties file (ISO 8859-1 with "\" escapes)
# This file should be translated.

providerName=Eclipse Marketplace Client
featureName=Marketplace Client

description=Marketplace Client makes all solutions listed on the Eclipse Marketplace available in your Eclipse IDE.\n\
\n\
By bringing the Marketplace into Eclipse, MPC offers a workflow for finding and installing a large collection of \
solutions from a single source through a simplified workflow that does not require users to deal with individual \
update sites.

# "copyright" property - text of the "Feature Update Copyright"
copyright=\
Copyright (c) 2010 The Eclipse Foundation.\n\
All rights reserved. This program and the accompanying materials\n\
are made available under the terms of the Eclipse Public License\n\
v1.0 which accompanies this distribution, and is available at\n\
http://www.eclipse.org/legal/epl-v10.html\n
################ end of copyright property ####################################
