# /**
#  * Copyright (c) 2002-2011 IBM Corporation and others.
#  * All rights reserved.   This program and the accompanying materials
#  * are made available under the terms of the Eclipse Public License v2.0
#  * which accompanies this distribution, and is available at
#  * http://www.eclipse.org/legal/epl-v20.html
#  * 
#  * Contributors: 
#  *   IBM - Initial API and implementation
#  */

# NLS_MESSAGEFORMAT_VAR

# "featureName" property - name of the feature
featureName=EMF RAP Common UI

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

# "description" property - description of the feature
description=*** DO NOT INSTALL IN YOUR IDE ***\n\
This feature is only for provisioning Target Platforms.\n\
General-purpose extensions to the Eclipse RAP UI.

EMFUpdateSiteName=Eclipse Modeling Framework Updates
