###############################################################################
# Copyright (c) 2009, 2011 EclipseSource 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:
#     EclipseSource - 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.

# "featureName" property - name of the feature
featureName=Equinox Core SDK

# "providerName" property - name of the company that provides the feature
providerName=Eclipse Equinox Project

# "updateSiteName" property - label for the update site
updateSiteName=The Equinox Project Repository

# "description" property - description of the feature
description=A collection of core Equinox bundles and source including the Equinox framework \
implementation itself. \n\
This feature includes the corresponding source and is intended \
to be added to target platforms at development time rather than \
deployed with end-user systems.

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